TP/Démo Stéganographie / Stéganalyse¶

Patrick Bas, CNRS¶

In [ ]:
# -*- coding: utf-8 -*-
from PIL import Image
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
import random
%matplotlib inline 

# Message to embedd
#message = 'Les compétences de l’équipe SIGMA reposent sur des fondements solides en statistiques et en géométrie, ses membres s’intéressent aux objets mathématiques extraits de mesures physiques comme par exemple les images, la lumière polarisée, les sons, les vidéos ou encore les capteurs chimiques ou de turbulence. Ces signaux et leurs propriétés sont traités en utilisant le formalisme Bayésien, la théorie des fonctions de croyance, la géométrie de l’information ou la théorie de l’information. Avec pour dénominateur commun le traitement et la modélisation statistique des signaux, nos activités de recherche s’inscrivent dans les communautés relevant de l’inférence Bayésienne, de la théorie de la décision évidentielle, de l’imagerie polarimétrique ou de la sécurité de l’information. L’équipe SIGMA s’appuie également sur des relations fortes avec le master Décision et Analyse de Données de l’École Centrale Lille et l’option de traitement statistique du signal de Telecom-Lille.Illustrations de nos recherches : Inférence Bayésienne et méthodes de Monte-Carlo : suivi d’objets vidéo, modélisation inverse (remontée aux données sources), Fusion de données : prise de décision à partir d’un réseau de capteurs Sécurité de l’information : détection d’intrusion et de signaux faibles ; authentification automatique de documents imprimés, Imagerie polarimétrique : détection d’artefacts sur des matériaux.'

message = 'CRIStAL (Centre de Recherche en Informatique, Signal et Automatique de Lille) est une unité mixte de recherche (UMR 9189) résultant de la fusion du LAGIS (Laboratoire d’Automatique, Génie Informatique et Signal - UMR 8219) et du LIFL (Laboratoire d’Informatique Fondamentale de Lille - UMR 8022) pour fédérer leurs compétences complémentaires en sciences de l’information. CRIStAL est né le 1er janvier 2015 sous la tutelle du CNRS, de l’Université Lille 1 et de l’Ecole Centrale de Lille en partenariat avec l’Université Lille 3, Inria et l’Institut Mines Telecom. CRIStAL est membre de l’institut de recherches interdisciplinaires IRCICA – USR CNRS 3380 (www.ircica.univ-lille1.fr). L’unité est composée de près de 430 membres (222 permanents et plus de 200 non permanents) dont 22 permanents CNRS et 27 permanents Inria. Les activités de recherche de CRIStAL concernent les thématiques liées aux grands enjeux scientifiques et sociétaux du moment tels que : BigData, logiciel, image et ses usages, interactions homme-machine, robotique, commande et supervision de grands systèmes, systèmes embarqués intelligents, bio-informatique… avec des applications notamment dans les secteurs de l’industrie du commerce, des technologies pour la santé, des smart grids.CRIStAL (Centre de Recherche en Informatique, Signal et Automatique de Lille) est une unité mixte de recherche (UMR 9189) résultant de la fusion du LAGIS (Laboratoire d’Automatique, Génie Informatique et Signal - UMR 8219) et du LIFL (Laboratoire d’Informatique Fondamentale de Lille - UMR 8022) pour fédérer leurs compétences complémentaires en sciences de l’information. CRIStAL est né le 1er janvier 2015 sous la tutelle du CNRS, de l’Université Lille 1 et de l’Ecole Centrale de Lille en partenariat avec l’Université Lille 3, Inria et l’Institut Mines Telecom. CRIStAL est membre de l’institut de recherches interdisciplinaires IRCICA – USR CNRS 3380 (www.ircica.univ-lille1.fr). L’unité est composée de près de 430 membres (222 permanents et plus de 200 non permanents) dont 22 permanents CNRS et 27 permanents Inria. Les activités de recherche de CRIStAL concernent les thématiques liées aux grands enjeux scientifiques et sociétaux du moment tels que : BigData, logiciel, image et ses usages, interactions homme-machine, robotique, commande et supervision de grands systèmes, systèmes embarqués intelligents, bio-informatique… avec des applications notamment dans les secteurs de l’industrie du commerce, des technologies pour la santé, des smart grids.CRIStAL (Centre de Recherche en Informatique, Signal et Automatique de Lille) est une unité mixte de recherche (UMR 9189) résultant de la fusion du LAGIS (Laboratoire d’Automatique, Génie Informatique et Signal - UMR 8219) et du LIFL (Laboratoire d’Informatique Fondamentale de Lille - UMR 8022) pour fédérer leurs compétences complémentaires en sciences de l’information. CRIStAL est né le 1er janvier 2015 sous la tutelle du CNRS, de l’Université Lille 1 et de l’Ecole Centrale de Lille en partenariat avec l’Université Lille 3, Inria et l’Institut Mines Telecom. CRIStAL est membre de l’institut de recherches interdisciplinaires IRCICA – USR CNRS 3380 (www.ircica.univ-lille1.fr). L’unité est composée de près de 430 membres (222 permanents et plus de 200 non permanents) dont 22 permanents CNRS et 27 permanents Inria. Les activités de recherche de CRIStAL concernent les thématiques liées aux grands enjeux scientifiques et sociétaux du moment tels que : BigData, logiciel, image et ses usages, interactions homme-machine, robotique, commande et supervision de grands systèmes, systèmes embarqués intelligents, bio-informatique… avec des applications notamment dans les secteurs de l’industrie du commerce, des technologies pour la santé, des smart grids.CRIStAL (Centre de Recherche en Informatique, Signal et Automatique de Lille) est une unité mixte de recherche (UMR 9189) résultant de la fusion du LAGIS (Laboratoire d’Automatique, Génie Informatique et Signal - UMR 8219) et du LIFL (Laboratoire d’Informatique Fondamentale de Lille - UMR 8022) pour fédérer leurs compétences complémentaires en sciences de l’information. CRIStAL est né le 1er janvier 2015 sous la tutelle du CNRS, de l’Université Lille 1 et de l’Ecole Centrale de Lille en partenariat avec l’Université Lille 3, Inria et l’Institut Mines Telecom. CRIStAL est membre de l’institut de recherches interdisciplinaires IRCICA – USR CNRS 3380 (www.ircica.univ-lille1.fr). L’unité est composée de près de 430 membres (222 permanents et plus de 200 non permanents) dont 22 permanents CNRS et 27 permanents Inria. Les activités de recherche de CRIStAL concernent les thématiques liées aux grands enjeux scientifiques et sociétaux du moment tels que : BigData, logiciel, image et ses usages, interactions homme-machine, robotique, commande et supervision de grands systèmes, systèmes embarqués intelligents, bio-informatique… avec des applications notamment dans les secteurs de l’industrie du commerce, des technologies pour la santé, des smart grids.CRIStAL (Centre de Recherche en Informatique, Signal et Automatique de Lille) est une unité mixte de recherche (UMR 9189) résultant de la fusion du LAGIS (Laboratoire d’Automatique, Génie Informatique et Signal - UMR 8219) et du LIFL (Laboratoire d’Informatique Fondamentale de Lille - UMR 8022) pour fédérer leurs compétences complémentaires en sciences de l’information. CRIStAL est né le 1er janvier 2015 sous la tutelle du CNRS, de l’Université Lille 1 et de l’Ecole Centrale de Lille en partenariat avec l’Université Lille 3, Inria et l’Institut Mines Telecom. CRIStAL est membre de l’institut de recherches interdisciplinaires IRCICA – USR CNRS 3380 (www.ircica.univ-lille1.fr). L’unité est composée de près de 430 membres (222 permanents et plus de 200 non permanents) dont 22 permanents CNRS et 27 permanents Inria. Les activités de recherche de CRIStAL concernent les thématiques liées aux grands enjeux scientifiques et sociétaux du moment tels que : BigData, logiciel, image et ses usages, interactions homme-machine, robotique, commande et supervision de grands systèmes, systèmes embarqués intelligents, bio-informatique… avec des applications notamment dans les secteurs de l’industrie du commerce, des technologies pour la santé, des smart grids.CRIStAL (Centre de Recherche en Informatique, Signal et Automatique de Lille) est une unité mixte de recherche (UMR 9189) résultant de la fusion du LAGIS (Laboratoire d’Automatique, Génie Informatique et Signal - UMR 8219) et du LIFL (Laboratoire d’Informatique Fondamentale de Lille - UMR 8022) pour fédérer leurs compétences complémentaires en sciences de l’information. CRIStAL est né le 1er janvier 2015 sous la tutelle du CNRS, de l’Université Lille 1 et de l’Ecole Centrale de Lille en partenariat avec l’Université Lille 3, Inria et l’Institut Mines Telecom. CRIStAL est membre de l’institut de recherches interdisciplinaires IRCICA – USR CNRS 3380 (www.ircica.univ-lille1.fr). L’unité est composée de près de 430 membres (222 permanents et plus de 200 non permanents) dont 22 permanents CNRS et 27 permanents Inria. Les activités de recherche de CRIStAL concernent les thématiques liées aux grands enjeux scientifiques et sociétaux du moment tels que : BigData, logiciel, image et ses usages, interactions homme-machine, robotique, commande et supervision de grands systèmes, systèmes embarqués intelligents, bio-informatique… avec des applications notamment dans les secteurs de l’industrie du commerce, des technologies pour la santé, des smart grids.'

# Key 
key = 'azerty'

print(message)
CRIStAL (Centre de Recherche en Informatique, Signal et Automatique de Lille) est une unité mixte de recherche (UMR 9189) résultant de la fusion du LAGIS (Laboratoire d’Automatique, Génie Informatique et Signal - UMR 8219) et du LIFL (Laboratoire d’Informatique Fondamentale de Lille - UMR 8022) pour fédérer leurs compétences complémentaires en sciences de l’information. CRIStAL est né le 1er janvier 2015 sous la tutelle du CNRS, de l’Université Lille 1 et de l’Ecole Centrale de Lille en partenariat avec l’Université Lille 3, Inria et l’Institut Mines Telecom. CRIStAL est membre de l’institut de recherches interdisciplinaires IRCICA – USR CNRS 3380 (www.ircica.univ-lille1.fr). L’unité est composée de près de 430 membres (222 permanents et plus de 200 non permanents) dont 22 permanents CNRS et 27 permanents Inria. Les activités de recherche de CRIStAL concernent les thématiques liées aux grands enjeux scientifiques et sociétaux du moment tels que : BigData, logiciel, image et ses usages, interactions homme-machine, robotique, commande et supervision de grands systèmes, systèmes embarqués intelligents, bio-informatique… avec des applications notamment dans les secteurs de l’industrie du commerce, des technologies pour la santé, des smart grids.CRIStAL (Centre de Recherche en Informatique, Signal et Automatique de Lille) est une unité mixte de recherche (UMR 9189) résultant de la fusion du LAGIS (Laboratoire d’Automatique, Génie Informatique et Signal - UMR 8219) et du LIFL (Laboratoire d’Informatique Fondamentale de Lille - UMR 8022) pour fédérer leurs compétences complémentaires en sciences de l’information. CRIStAL est né le 1er janvier 2015 sous la tutelle du CNRS, de l’Université Lille 1 et de l’Ecole Centrale de Lille en partenariat avec l’Université Lille 3, Inria et l’Institut Mines Telecom. CRIStAL est membre de l’institut de recherches interdisciplinaires IRCICA – USR CNRS 3380 (www.ircica.univ-lille1.fr). L’unité est composée de près de 430 membres (222 permanents et plus de 200 non permanents) dont 22 permanents CNRS et 27 permanents Inria. Les activités de recherche de CRIStAL concernent les thématiques liées aux grands enjeux scientifiques et sociétaux du moment tels que : BigData, logiciel, image et ses usages, interactions homme-machine, robotique, commande et supervision de grands systèmes, systèmes embarqués intelligents, bio-informatique… avec des applications notamment dans les secteurs de l’industrie du commerce, des technologies pour la santé, des smart grids.CRIStAL (Centre de Recherche en Informatique, Signal et Automatique de Lille) est une unité mixte de recherche (UMR 9189) résultant de la fusion du LAGIS (Laboratoire d’Automatique, Génie Informatique et Signal - UMR 8219) et du LIFL (Laboratoire d’Informatique Fondamentale de Lille - UMR 8022) pour fédérer leurs compétences complémentaires en sciences de l’information. CRIStAL est né le 1er janvier 2015 sous la tutelle du CNRS, de l’Université Lille 1 et de l’Ecole Centrale de Lille en partenariat avec l’Université Lille 3, Inria et l’Institut Mines Telecom. CRIStAL est membre de l’institut de recherches interdisciplinaires IRCICA – USR CNRS 3380 (www.ircica.univ-lille1.fr). L’unité est composée de près de 430 membres (222 permanents et plus de 200 non permanents) dont 22 permanents CNRS et 27 permanents Inria. Les activités de recherche de CRIStAL concernent les thématiques liées aux grands enjeux scientifiques et sociétaux du moment tels que : BigData, logiciel, image et ses usages, interactions homme-machine, robotique, commande et supervision de grands systèmes, systèmes embarqués intelligents, bio-informatique… avec des applications notamment dans les secteurs de l’industrie du commerce, des technologies pour la santé, des smart grids.CRIStAL (Centre de Recherche en Informatique, Signal et Automatique de Lille) est une unité mixte de recherche (UMR 9189) résultant de la fusion du LAGIS (Laboratoire d’Automatique, Génie Informatique et Signal - UMR 8219) et du LIFL (Laboratoire d’Informatique Fondamentale de Lille - UMR 8022) pour fédérer leurs compétences complémentaires en sciences de l’information. CRIStAL est né le 1er janvier 2015 sous la tutelle du CNRS, de l’Université Lille 1 et de l’Ecole Centrale de Lille en partenariat avec l’Université Lille 3, Inria et l’Institut Mines Telecom. CRIStAL est membre de l’institut de recherches interdisciplinaires IRCICA – USR CNRS 3380 (www.ircica.univ-lille1.fr). L’unité est composée de près de 430 membres (222 permanents et plus de 200 non permanents) dont 22 permanents CNRS et 27 permanents Inria. Les activités de recherche de CRIStAL concernent les thématiques liées aux grands enjeux scientifiques et sociétaux du moment tels que : BigData, logiciel, image et ses usages, interactions homme-machine, robotique, commande et supervision de grands systèmes, systèmes embarqués intelligents, bio-informatique… avec des applications notamment dans les secteurs de l’industrie du commerce, des technologies pour la santé, des smart grids.CRIStAL (Centre de Recherche en Informatique, Signal et Automatique de Lille) est une unité mixte de recherche (UMR 9189) résultant de la fusion du LAGIS (Laboratoire d’Automatique, Génie Informatique et Signal - UMR 8219) et du LIFL (Laboratoire d’Informatique Fondamentale de Lille - UMR 8022) pour fédérer leurs compétences complémentaires en sciences de l’information. CRIStAL est né le 1er janvier 2015 sous la tutelle du CNRS, de l’Université Lille 1 et de l’Ecole Centrale de Lille en partenariat avec l’Université Lille 3, Inria et l’Institut Mines Telecom. CRIStAL est membre de l’institut de recherches interdisciplinaires IRCICA – USR CNRS 3380 (www.ircica.univ-lille1.fr). L’unité est composée de près de 430 membres (222 permanents et plus de 200 non permanents) dont 22 permanents CNRS et 27 permanents Inria. Les activités de recherche de CRIStAL concernent les thématiques liées aux grands enjeux scientifiques et sociétaux du moment tels que : BigData, logiciel, image et ses usages, interactions homme-machine, robotique, commande et supervision de grands systèmes, systèmes embarqués intelligents, bio-informatique… avec des applications notamment dans les secteurs de l’industrie du commerce, des technologies pour la santé, des smart grids.CRIStAL (Centre de Recherche en Informatique, Signal et Automatique de Lille) est une unité mixte de recherche (UMR 9189) résultant de la fusion du LAGIS (Laboratoire d’Automatique, Génie Informatique et Signal - UMR 8219) et du LIFL (Laboratoire d’Informatique Fondamentale de Lille - UMR 8022) pour fédérer leurs compétences complémentaires en sciences de l’information. CRIStAL est né le 1er janvier 2015 sous la tutelle du CNRS, de l’Université Lille 1 et de l’Ecole Centrale de Lille en partenariat avec l’Université Lille 3, Inria et l’Institut Mines Telecom. CRIStAL est membre de l’institut de recherches interdisciplinaires IRCICA – USR CNRS 3380 (www.ircica.univ-lille1.fr). L’unité est composée de près de 430 membres (222 permanents et plus de 200 non permanents) dont 22 permanents CNRS et 27 permanents Inria. Les activités de recherche de CRIStAL concernent les thématiques liées aux grands enjeux scientifiques et sociétaux du moment tels que : BigData, logiciel, image et ses usages, interactions homme-machine, robotique, commande et supervision de grands systèmes, systèmes embarqués intelligents, bio-informatique… avec des applications notamment dans les secteurs de l’industrie du commerce, des technologies pour la santé, des smart grids.

Chargement de l'image COVER¶

In [ ]:
# Cover file
image_path = './red_fish.png'
# Stego file
stego_path = './stego.png'

# Open and show the figure
pil_image = Image.open(image_path)
im_array = np.asarray(pil_image)
im_stego = np.copy(im_array)
plt.figure(1,figsize=(10,10))
plt.imshow(im_array)
Out[ ]:
<matplotlib.image.AxesImage at 0x15d4479a910>

Affichage du message inséré (en bits)¶

In [ ]:
    

# Convert the message to bits
#message_unicode = unicode(message, "utf-8")

message_unicode = str(message)
#print(message_unicode)
#bits = '{:b}'.format(int(message_unicode.encode('utf-8').encode('hex'), 16))

#bits = ''.join(['{:b}'.format(ord(x)) for x in message_unicode.encode('utf-8')])

bits  = bin(int.from_bytes(message.encode(), 'big'))

bits = bits[2:]

print('message inséré:')
print(bits[:100])
message inséré:
1000011010100100100100101010011011101000100000101001100001000000010100001000011011001010110111001110
In [ ]:
bit_string  = bin(int.from_bytes(message.encode(), 'big'))
print(bit_string[:10])
n = int('0b'+bit_string[2:], 2)
print(bit_string[:])
n.to_bytes((n.bit_length() + 7) // 8, 'big').decode()
0b10000110
0b10000110101001001001001010100110111010001000001010011000010000000101000010000110110010101101110011101000111001001100101001000000110010001100101001000000101001001100101011000110110100001100101011100100110001101101000011001010010000001100101011011100010000001001001011011100110011001101111011100100110110101100001011101000110100101110001011101010110010100101100001000000101001101101001011001110110111001100001011011000010000001100101011101000010000001000001011101010111010001101111011011010110000101110100011010010111000101110101011001010010000001100100011001010010000001001100011010010110110001101100011001010010100100100000011001010111001101110100001000000111010101101110011001010010000001110101011011100110100101110100110000111010100100100000011011010110100101111000011101000110010100100000011001000110010100100000011100100110010101100011011010000110010101110010011000110110100001100101001000000010100001010101010011010101001000100000001110010011000100111000001110010010100100100000011100101100001110101001011100110111010101101100011101000110000101101110011101000010000001100100011001010010000001101100011000010010000001100110011101010111001101101001011011110110111000100000011001000111010100100000010011000100000101000111010010010101001100100000001010000100110001100001011000100110111101110010011000010111010001101111011010010111001001100101001000000110010011100010100000001001100101000001011101010111010001101111011011010110000101110100011010010111000101110101011001010010110000100000010001111100001110101001011011100110100101100101001000000100100101101110011001100110111101110010011011010110000101110100011010010111000101110101011001010010000001100101011101000010000001010011011010010110011101101110011000010110110000100000001011010010000001010101010011010101001000100000001110000011001000110001001110010010100100100000011001010111010000100000011001000111010100100000010011000100100101000110010011000010000000101000010011000110000101100010011011110111001001100001011101000110111101101001011100100110010100100000011001001110001010000000100110010100100101101110011001100110111101110010011011010110000101110100011010010111000101110101011001010010000001000110011011110110111001100100011000010110110101100101011011100111010001100001011011000110010100100000011001000110010100100000010011000110100101101100011011000110010100100000001011010010000001010101010011010101001000100000001110000011000000110010001100100010100100100000011100000110111101110101011100100010000001100110110000111010100101100100110000111010100101110010011001010111001000100000011011000110010101110101011100100111001100100000011000110110111101101101011100001100001110101001011101000110010101101110011000110110010101110011001000000110001101101111011011010111000001101100110000111010100101101101011001010110111001110100011000010110100101110010011001010111001100100000011001010110111000100000011100110110001101101001011001010110111001100011011001010111001100100000011001000110010100100000011011001110001010000000100110010110100101101110011001100110111101110010011011010110000101110100011010010110111101101110001011100010000001000011010100100100100101010011011101000100000101001100001000000110010101110011011101000010000001101110110000111010100100100000011011000110010100100000001100010110010101110010001000000110101001100001011011100111011001101001011001010111001000100000001100100011000000110001001101010010000001110011011011110111010101110011001000000110110001100001001000000111010001110101011101000110010101101100011011000110010100100000011001000111010100100000010000110100111001010010010100110010110000100000011001000110010100100000011011001110001010000000100110010101010101101110011010010111011001100101011100100111001101101001011101001100001110101001001000000100110001101001011011000110110001100101001000000011000100100000011001010111010000100000011001000110010100100000011011001110001010000000100110010100010101100011011011110110110001100101001000000100001101100101011011100111010001110010011000010110110001100101001000000110010001100101001000000100110001101001011011000110110001100101001000000110010101101110001000000111000001100001011100100111010001100101011011100110000101110010011010010110000101110100001000000110000101110110011001010110001100100000011011001110001010000000100110010101010101101110011010010111011001100101011100100111001101101001011101001100001110101001001000000100110001101001011011000110110001100101001000000011001100101100001000000100100101101110011100100110100101100001001000000110010101110100001000000110110011100010100000001001100101001001011011100111001101110100011010010111010001110101011101000010000001001101011010010110111001100101011100110010000001010100011001010110110001100101011000110110111101101101001011100010000001000011010100100100100101010011011101000100000101001100001000000110010101110011011101000010000001101101011001010110110101100010011100100110010100100000011001000110010100100000011011001110001010000000100110010110100101101110011100110111010001101001011101000111010101110100001000000110010001100101001000000111001001100101011000110110100001100101011100100110001101101000011001010111001100100000011010010110111001110100011001010111001001100100011010010111001101100011011010010111000001101100011010010110111001100001011010010111001001100101011100110010000001001001010100100100001101001001010000110100000100100000111000101000000010010011001000000101010101010011010100100010000001000011010011100101001001010011001000000011001100110011001110000011000000100000001010000111011101110111011101110010111001101001011100100110001101101001011000110110000100101110011101010110111001101001011101100010110101101100011010010110110001101100011001010011000100101110011001100111001000101001001011100010000001001100111000101000000010011001011101010110111001101001011101001100001110101001001000000110010101110011011101000010000001100011011011110110110101110000011011110111001111000011101010010110010100100000011001000110010100100000011100000111001011000011101010000111001100100000011001000110010100100000001101000011001100110000001000000110110101100101011011010110001001110010011001010111001100100000001010000011001000110010001100100010000001110000011001010111001001101101011000010110111001100101011011100111010001110011001000000110010101110100001000000111000001101100011101010111001100100000011001000110010100100000001100100011000000110000001000000110111001101111011011100010000001110000011001010111001001101101011000010110111001100101011011100111010001110011001010010010000001100100011011110110111001110100001000000011001000110010001000000111000001100101011100100110110101100001011011100110010101101110011101000111001100100000010000110100111001010010010100110010000001100101011101000010000000110010001101110010000001110000011001010111001001101101011000010110111001100101011011100111010001110011001000000100100101101110011100100110100101100001001011100010000001001100011001010111001100100000011000010110001101110100011010010111011001101001011101001100001110101001011100110010000001100100011001010010000001110010011001010110001101101000011001010111001001100011011010000110010100100000011001000110010100100000010000110101001001001001010100110111010001000001010011000010000001100011011011110110111001100011011001010111001001101110011001010110111001110100001000000110110001100101011100110010000001110100011010001100001110101001011011010110000101110100011010010111000101110101011001010111001100100000011011000110100111000011101010010110010101110011001000000110000101110101011110000010000001100111011100100110000101101110011001000111001100100000011001010110111001101010011001010111010101111000001000000111001101100011011010010110010101101110011101000110100101100110011010010111000101110101011001010111001100100000011001010111010000100000011100110110111101100011011010011100001110101001011101000110000101110101011110000010000001100100011101010010000001101101011011110110110101100101011011100111010000100000011101000110010101101100011100110010000001110001011101010110010100100000001110100010000001000010011010010110011101000100011000010111010001100001001011000010000001101100011011110110011101101001011000110110100101100101011011000010110000100000011010010110110101100001011001110110010100100000011001010111010000100000011100110110010101110011001000000111010101110011011000010110011101100101011100110010110000100000011010010110111001110100011001010111001001100001011000110111010001101001011011110110111001110011001000000110100001101111011011010110110101100101001011010110110101100001011000110110100001101001011011100110010100101100001000000111001001101111011000100110111101110100011010010111000101110101011001010010110000100000011000110110111101101101011011010110000101101110011001000110010100100000011001010111010000100000011100110111010101110000011001010111001001110110011010010111001101101001011011110110111000100000011001000110010100100000011001110111001001100001011011100110010001110011001000000111001101111001011100110111010011000011101010000110110101100101011100110010110000100000011100110111100101110011011101001100001110101000011011010110010101110011001000000110010101101101011000100110000101110010011100010111010111000011101010010111001100100000011010010110111001110100011001010110110001101100011010010110011101100101011011100111010001110011001011000010000001100010011010010110111100101101011010010110111001100110011011110111001001101101011000010111010001101001011100010111010101100101111000101000000010100110001000000110000101110110011001010110001100100000011001000110010101110011001000000110000101110000011100000110110001101001011000110110000101110100011010010110111101101110011100110010000001101110011011110111010001100001011011010110110101100101011011100111010000100000011001000110000101101110011100110010000001101100011001010111001100100000011100110110010101100011011101000110010101110101011100100111001100100000011001000110010100100000011011001110001010000000100110010110100101101110011001000111010101110011011101000111001001101001011001010010000001100100011101010010000001100011011011110110110101101101011001010111001001100011011001010010110000100000011001000110010101110011001000000111010001100101011000110110100001101110011011110110110001101111011001110110100101100101011100110010000001110000011011110111010101110010001000000110110001100001001000000111001101100001011011100111010011000011101010010010110000100000011001000110010101110011001000000111001101101101011000010111001001110100001000000110011101110010011010010110010001110011001011100100001101010010010010010101001101110100010000010100110000100000001010000100001101100101011011100111010001110010011001010010000001100100011001010010000001010010011001010110001101101000011001010111001001100011011010000110010100100000011001010110111000100000010010010110111001100110011011110111001001101101011000010111010001101001011100010111010101100101001011000010000001010011011010010110011101101110011000010110110000100000011001010111010000100000010000010111010101110100011011110110110101100001011101000110100101110001011101010110010100100000011001000110010100100000010011000110100101101100011011000110010100101001001000000110010101110011011101000010000001110101011011100110010100100000011101010110111001101001011101001100001110101001001000000110110101101001011110000111010001100101001000000110010001100101001000000111001001100101011000110110100001100101011100100110001101101000011001010010000000101000010101010100110101010010001000000011100100110001001110000011100100101001001000000111001011000011101010010111001101110101011011000111010001100001011011100111010000100000011001000110010100100000011011000110000100100000011001100111010101110011011010010110111101101110001000000110010001110101001000000100110001000001010001110100100101010011001000000010100001001100011000010110001001101111011100100110000101110100011011110110100101110010011001010010000001100100111000101000000010011001010000010111010101110100011011110110110101100001011101000110100101110001011101010110010100101100001000000100011111000011101010010110111001101001011001010010000001001001011011100110011001101111011100100110110101100001011101000110100101110001011101010110010100100000011001010111010000100000010100110110100101100111011011100110000101101100001000000010110100100000010101010100110101010010001000000011100000110010001100010011100100101001001000000110010101110100001000000110010001110101001000000100110001001001010001100100110000100000001010000100110001100001011000100110111101110010011000010111010001101111011010010111001001100101001000000110010011100010100000001001100101001001011011100110011001101111011100100110110101100001011101000110100101110001011101010110010100100000010001100110111101101110011001000110000101101101011001010110111001110100011000010110110001100101001000000110010001100101001000000100110001101001011011000110110001100101001000000010110100100000010101010100110101010010001000000011100000110000001100100011001000101001001000000111000001101111011101010111001000100000011001101100001110101001011001001100001110101001011100100110010101110010001000000110110001100101011101010111001001110011001000000110001101101111011011010111000011000011101010010111010001100101011011100110001101100101011100110010000001100011011011110110110101110000011011001100001110101001011011010110010101101110011101000110000101101001011100100110010101110011001000000110010101101110001000000111001101100011011010010110010101101110011000110110010101110011001000000110010001100101001000000110110011100010100000001001100101101001011011100110011001101111011100100110110101100001011101000110100101101111011011100010111000100000010000110101001001001001010100110111010001000001010011000010000001100101011100110111010000100000011011101100001110101001001000000110110001100101001000000011000101100101011100100010000001101010011000010110111001110110011010010110010101110010001000000011001000110000001100010011010100100000011100110110111101110101011100110010000001101100011000010010000001110100011101010111010001100101011011000110110001100101001000000110010001110101001000000100001101001110010100100101001100101100001000000110010001100101001000000110110011100010100000001001100101010101011011100110100101110110011001010111001001110011011010010111010011000011101010010010000001001100011010010110110001101100011001010010000000110001001000000110010101110100001000000110010001100101001000000110110011100010100000001001100101000101011000110110111101101100011001010010000001000011011001010110111001110100011100100110000101101100011001010010000001100100011001010010000001001100011010010110110001101100011001010010000001100101011011100010000001110000011000010111001001110100011001010110111001100001011100100110100101100001011101000010000001100001011101100110010101100011001000000110110011100010100000001001100101010101011011100110100101110110011001010111001001110011011010010111010011000011101010010010000001001100011010010110110001101100011001010010000000110011001011000010000001001001011011100111001001101001011000010010000001100101011101000010000001101100111000101000000010011001010010010110111001110011011101000110100101110100011101010111010000100000010011010110100101101110011001010111001100100000010101000110010101101100011001010110001101101111011011010010111000100000010000110101001001001001010100110111010001000001010011000010000001100101011100110111010000100000011011010110010101101101011000100111001001100101001000000110010001100101001000000110110011100010100000001001100101101001011011100111001101110100011010010111010001110101011101000010000001100100011001010010000001110010011001010110001101101000011001010111001001100011011010000110010101110011001000000110100101101110011101000110010101110010011001000110100101110011011000110110100101110000011011000110100101101110011000010110100101110010011001010111001100100000010010010101001001000011010010010100001101000001001000001110001010000000100100110010000001010101010100110101001000100000010000110100111001010010010100110010000000110011001100110011100000110000001000000010100001110111011101110111011100101110011010010111001001100011011010010110001101100001001011100111010101101110011010010111011000101101011011000110100101101100011011000110010100110001001011100110011001110010001010010010111000100000010011001110001010000000100110010111010101101110011010010111010011000011101010010010000001100101011100110111010000100000011000110110111101101101011100000110111101110011110000111010100101100101001000000110010001100101001000000111000001110010110000111010100001110011001000000110010001100101001000000011010000110011001100000010000001101101011001010110110101100010011100100110010101110011001000000010100000110010001100100011001000100000011100000110010101110010011011010110000101101110011001010110111001110100011100110010000001100101011101000010000001110000011011000111010101110011001000000110010001100101001000000011001000110000001100000010000001101110011011110110111000100000011100000110010101110010011011010110000101101110011001010110111001110100011100110010100100100000011001000110111101101110011101000010000000110010001100100010000001110000011001010111001001101101011000010110111001100101011011100111010001110011001000000100001101001110010100100101001100100000011001010111010000100000001100100011011100100000011100000110010101110010011011010110000101101110011001010110111001110100011100110010000001001001011011100111001001101001011000010010111000100000010011000110010101110011001000000110000101100011011101000110100101110110011010010111010011000011101010010111001100100000011001000110010100100000011100100110010101100011011010000110010101110010011000110110100001100101001000000110010001100101001000000100001101010010010010010101001101110100010000010100110000100000011000110110111101101110011000110110010101110010011011100110010101101110011101000010000001101100011001010111001100100000011101000110100011000011101010010110110101100001011101000110100101110001011101010110010101110011001000000110110001101001110000111010100101100101011100110010000001100001011101010111100000100000011001110111001001100001011011100110010001110011001000000110010101101110011010100110010101110101011110000010000001110011011000110110100101100101011011100111010001101001011001100110100101110001011101010110010101110011001000000110010101110100001000000111001101101111011000110110100111000011101010010111010001100001011101010111100000100000011001000111010100100000011011010110111101101101011001010110111001110100001000000111010001100101011011000111001100100000011100010111010101100101001000000011101000100000010000100110100101100111010001000110000101110100011000010010110000100000011011000110111101100111011010010110001101101001011001010110110000101100001000000110100101101101011000010110011101100101001000000110010101110100001000000111001101100101011100110010000001110101011100110110000101100111011001010111001100101100001000000110100101101110011101000110010101110010011000010110001101110100011010010110111101101110011100110010000001101000011011110110110101101101011001010010110101101101011000010110001101101000011010010110111001100101001011000010000001110010011011110110001001101111011101000110100101110001011101010110010100101100001000000110001101101111011011010110110101100001011011100110010001100101001000000110010101110100001000000111001101110101011100000110010101110010011101100110100101110011011010010110111101101110001000000110010001100101001000000110011101110010011000010110111001100100011100110010000001110011011110010111001101110100110000111010100001101101011001010111001100101100001000000111001101111001011100110111010011000011101010000110110101100101011100110010000001100101011011010110001001100001011100100111000101110101110000111010100101110011001000000110100101101110011101000110010101101100011011000110100101100111011001010110111001110100011100110010110000100000011000100110100101101111001011010110100101101110011001100110111101110010011011010110000101110100011010010111000101110101011001011110001010000000101001100010000001100001011101100110010101100011001000000110010001100101011100110010000001100001011100000111000001101100011010010110001101100001011101000110100101101111011011100111001100100000011011100110111101110100011000010110110101101101011001010110111001110100001000000110010001100001011011100111001100100000011011000110010101110011001000000111001101100101011000110111010001100101011101010111001001110011001000000110010001100101001000000110110011100010100000001001100101101001011011100110010001110101011100110111010001110010011010010110010100100000011001000111010100100000011000110110111101101101011011010110010101110010011000110110010100101100001000000110010001100101011100110010000001110100011001010110001101101000011011100110111101101100011011110110011101101001011001010111001100100000011100000110111101110101011100100010000001101100011000010010000001110011011000010110111001110100110000111010100100101100001000000110010001100101011100110010000001110011011011010110000101110010011101000010000001100111011100100110100101100100011100110010111001000011010100100100100101010011011101000100000101001100001000000010100001000011011001010110111001110100011100100110010100100000011001000110010100100000010100100110010101100011011010000110010101110010011000110110100001100101001000000110010101101110001000000100100101101110011001100110111101110010011011010110000101110100011010010111000101110101011001010010110000100000010100110110100101100111011011100110000101101100001000000110010101110100001000000100000101110101011101000110111101101101011000010111010001101001011100010111010101100101001000000110010001100101001000000100110001101001011011000110110001100101001010010010000001100101011100110111010000100000011101010110111001100101001000000111010101101110011010010111010011000011101010010010000001101101011010010111100001110100011001010010000001100100011001010010000001110010011001010110001101101000011001010111001001100011011010000110010100100000001010000101010101001101010100100010000000111001001100010011100000111001001010010010000001110010110000111010100101110011011101010110110001110100011000010110111001110100001000000110010001100101001000000110110001100001001000000110011001110101011100110110100101101111011011100010000001100100011101010010000001001100010000010100011101001001010100110010000000101000010011000110000101100010011011110111001001100001011101000110111101101001011100100110010100100000011001001110001010000000100110010100000101110101011101000110111101101101011000010111010001101001011100010111010101100101001011000010000001000111110000111010100101101110011010010110010100100000010010010110111001100110011011110111001001101101011000010111010001101001011100010111010101100101001000000110010101110100001000000101001101101001011001110110111001100001011011000010000000101101001000000101010101001101010100100010000000111000001100100011000100111001001010010010000001100101011101000010000001100100011101010010000001001100010010010100011001001100001000000010100001001100011000010110001001101111011100100110000101110100011011110110100101110010011001010010000001100100111000101000000010011001010010010110111001100110011011110111001001101101011000010111010001101001011100010111010101100101001000000100011001101111011011100110010001100001011011010110010101101110011101000110000101101100011001010010000001100100011001010010000001001100011010010110110001101100011001010010000000101101001000000101010101001101010100100010000000111000001100000011001000110010001010010010000001110000011011110111010101110010001000000110011011000011101010010110010011000011101010010111001001100101011100100010000001101100011001010111010101110010011100110010000001100011011011110110110101110000110000111010100101110100011001010110111001100011011001010111001100100000011000110110111101101101011100000110110011000011101010010110110101100101011011100111010001100001011010010111001001100101011100110010000001100101011011100010000001110011011000110110100101100101011011100110001101100101011100110010000001100100011001010010000001101100111000101000000010011001011010010110111001100110011011110111001001101101011000010111010001101001011011110110111000101110001000000100001101010010010010010101001101110100010000010100110000100000011001010111001101110100001000000110111011000011101010010010000001101100011001010010000000110001011001010111001000100000011010100110000101101110011101100110100101100101011100100010000000110010001100000011000100110101001000000111001101101111011101010111001100100000011011000110000100100000011101000111010101110100011001010110110001101100011001010010000001100100011101010010000001000011010011100101001001010011001011000010000001100100011001010010000001101100111000101000000010011001010101010110111001101001011101100110010101110010011100110110100101110100110000111010100100100000010011000110100101101100011011000110010100100000001100010010000001100101011101000010000001100100011001010010000001101100111000101000000010011001010001010110001101101111011011000110010100100000010000110110010101101110011101000111001001100001011011000110010100100000011001000110010100100000010011000110100101101100011011000110010100100000011001010110111000100000011100000110000101110010011101000110010101101110011000010111001001101001011000010111010000100000011000010111011001100101011000110010000001101100111000101000000010011001010101010110111001101001011101100110010101110010011100110110100101110100110000111010100100100000010011000110100101101100011011000110010100100000001100110010110000100000010010010110111001110010011010010110000100100000011001010111010000100000011011001110001010000000100110010100100101101110011100110111010001101001011101000111010101110100001000000100110101101001011011100110010101110011001000000101010001100101011011000110010101100011011011110110110100101110001000000100001101010010010010010101001101110100010000010100110000100000011001010111001101110100001000000110110101100101011011010110001001110010011001010010000001100100011001010010000001101100111000101000000010011001011010010110111001110011011101000110100101110100011101010111010000100000011001000110010100100000011100100110010101100011011010000110010101110010011000110110100001100101011100110010000001101001011011100111010001100101011100100110010001101001011100110110001101101001011100000110110001101001011011100110000101101001011100100110010101110011001000000100100101010010010000110100100101000011010000010010000011100010100000001001001100100000010101010101001101010010001000000100001101001110010100100101001100100000001100110011001100111000001100000010000000101000011101110111011101110111001011100110100101110010011000110110100101100011011000010010111001110101011011100110100101110110001011010110110001101001011011000110110001100101001100010010111001100110011100100010100100101110001000000100110011100010100000001001100101110101011011100110100101110100110000111010100100100000011001010111001101110100001000000110001101101111011011010111000001101111011100111100001110101001011001010010000001100100011001010010000001110000011100101100001110101000011100110010000001100100011001010010000000110100001100110011000000100000011011010110010101101101011000100111001001100101011100110010000000101000001100100011001000110010001000000111000001100101011100100110110101100001011011100110010101101110011101000111001100100000011001010111010000100000011100000110110001110101011100110010000001100100011001010010000000110010001100000011000000100000011011100110111101101110001000000111000001100101011100100110110101100001011011100110010101101110011101000111001100101001001000000110010001101111011011100111010000100000001100100011001000100000011100000110010101110010011011010110000101101110011001010110111001110100011100110010000001000011010011100101001001010011001000000110010101110100001000000011001000110111001000000111000001100101011100100110110101100001011011100110010101101110011101000111001100100000010010010110111001110010011010010110000100101110001000000100110001100101011100110010000001100001011000110111010001101001011101100110100101110100110000111010100101110011001000000110010001100101001000000111001001100101011000110110100001100101011100100110001101101000011001010010000001100100011001010010000001000011010100100100100101010011011101000100000101001100001000000110001101101111011011100110001101100101011100100110111001100101011011100111010000100000011011000110010101110011001000000111010001101000110000111010100101101101011000010111010001101001011100010111010101100101011100110010000001101100011010011100001110101001011001010111001100100000011000010111010101111000001000000110011101110010011000010110111001100100011100110010000001100101011011100110101001100101011101010111100000100000011100110110001101101001011001010110111001110100011010010110011001101001011100010111010101100101011100110010000001100101011101000010000001110011011011110110001101101001110000111010100101110100011000010111010101111000001000000110010001110101001000000110110101101111011011010110010101101110011101000010000001110100011001010110110001110011001000000111000101110101011001010010000000111010001000000100001001101001011001110100010001100001011101000110000100101100001000000110110001101111011001110110100101100011011010010110010101101100001011000010000001101001011011010110000101100111011001010010000001100101011101000010000001110011011001010111001100100000011101010111001101100001011001110110010101110011001011000010000001101001011011100111010001100101011100100110000101100011011101000110100101101111011011100111001100100000011010000110111101101101011011010110010100101101011011010110000101100011011010000110100101101110011001010010110000100000011100100110111101100010011011110111010001101001011100010111010101100101001011000010000001100011011011110110110101101101011000010110111001100100011001010010000001100101011101000010000001110011011101010111000001100101011100100111011001101001011100110110100101101111011011100010000001100100011001010010000001100111011100100110000101101110011001000111001100100000011100110111100101110011011101001100001110101000011011010110010101110011001011000010000001110011011110010111001101110100110000111010100001101101011001010111001100100000011001010110110101100010011000010111001001110001011101011100001110101001011100110010000001101001011011100111010001100101011011000110110001101001011001110110010101101110011101000111001100101100001000000110001001101001011011110010110101101001011011100110011001101111011100100110110101100001011101000110100101110001011101010110010111100010100000001010011000100000011000010111011001100101011000110010000001100100011001010111001100100000011000010111000001110000011011000110100101100011011000010111010001101001011011110110111001110011001000000110111001101111011101000110000101101101011011010110010101101110011101000010000001100100011000010110111001110011001000000110110001100101011100110010000001110011011001010110001101110100011001010111010101110010011100110010000001100100011001010010000001101100111000101000000010011001011010010110111001100100011101010111001101110100011100100110100101100101001000000110010001110101001000000110001101101111011011010110110101100101011100100110001101100101001011000010000001100100011001010111001100100000011101000110010101100011011010000110111001101111011011000110111101100111011010010110010101110011001000000111000001101111011101010111001000100000011011000110000100100000011100110110000101101110011101001100001110101001001011000010000001100100011001010111001100100000011100110110110101100001011100100111010000100000011001110111001001101001011001000111001100101110010000110101001001001001010100110111010001000001010011000010000000101000010000110110010101101110011101000111001001100101001000000110010001100101001000000101001001100101011000110110100001100101011100100110001101101000011001010010000001100101011011100010000001001001011011100110011001101111011100100110110101100001011101000110100101110001011101010110010100101100001000000101001101101001011001110110111001100001011011000010000001100101011101000010000001000001011101010111010001101111011011010110000101110100011010010111000101110101011001010010000001100100011001010010000001001100011010010110110001101100011001010010100100100000011001010111001101110100001000000111010101101110011001010010000001110101011011100110100101110100110000111010100100100000011011010110100101111000011101000110010100100000011001000110010100100000011100100110010101100011011010000110010101110010011000110110100001100101001000000010100001010101010011010101001000100000001110010011000100111000001110010010100100100000011100101100001110101001011100110111010101101100011101000110000101101110011101000010000001100100011001010010000001101100011000010010000001100110011101010111001101101001011011110110111000100000011001000111010100100000010011000100000101000111010010010101001100100000001010000100110001100001011000100110111101110010011000010111010001101111011010010111001001100101001000000110010011100010100000001001100101000001011101010111010001101111011011010110000101110100011010010111000101110101011001010010110000100000010001111100001110101001011011100110100101100101001000000100100101101110011001100110111101110010011011010110000101110100011010010111000101110101011001010010000001100101011101000010000001010011011010010110011101101110011000010110110000100000001011010010000001010101010011010101001000100000001110000011001000110001001110010010100100100000011001010111010000100000011001000111010100100000010011000100100101000110010011000010000000101000010011000110000101100010011011110111001001100001011101000110111101101001011100100110010100100000011001001110001010000000100110010100100101101110011001100110111101110010011011010110000101110100011010010111000101110101011001010010000001000110011011110110111001100100011000010110110101100101011011100111010001100001011011000110010100100000011001000110010100100000010011000110100101101100011011000110010100100000001011010010000001010101010011010101001000100000001110000011000000110010001100100010100100100000011100000110111101110101011100100010000001100110110000111010100101100100110000111010100101110010011001010111001000100000011011000110010101110101011100100111001100100000011000110110111101101101011100001100001110101001011101000110010101101110011000110110010101110011001000000110001101101111011011010111000001101100110000111010100101101101011001010110111001110100011000010110100101110010011001010111001100100000011001010110111000100000011100110110001101101001011001010110111001100011011001010111001100100000011001000110010100100000011011001110001010000000100110010110100101101110011001100110111101110010011011010110000101110100011010010110111101101110001011100010000001000011010100100100100101010011011101000100000101001100001000000110010101110011011101000010000001101110110000111010100100100000011011000110010100100000001100010110010101110010001000000110101001100001011011100111011001101001011001010111001000100000001100100011000000110001001101010010000001110011011011110111010101110011001000000110110001100001001000000111010001110101011101000110010101101100011011000110010100100000011001000111010100100000010000110100111001010010010100110010110000100000011001000110010100100000011011001110001010000000100110010101010101101110011010010111011001100101011100100111001101101001011101001100001110101001001000000100110001101001011011000110110001100101001000000011000100100000011001010111010000100000011001000110010100100000011011001110001010000000100110010100010101100011011011110110110001100101001000000100001101100101011011100111010001110010011000010110110001100101001000000110010001100101001000000100110001101001011011000110110001100101001000000110010101101110001000000111000001100001011100100111010001100101011011100110000101110010011010010110000101110100001000000110000101110110011001010110001100100000011011001110001010000000100110010101010101101110011010010111011001100101011100100111001101101001011101001100001110101001001000000100110001101001011011000110110001100101001000000011001100101100001000000100100101101110011100100110100101100001001000000110010101110100001000000110110011100010100000001001100101001001011011100111001101110100011010010111010001110101011101000010000001001101011010010110111001100101011100110010000001010100011001010110110001100101011000110110111101101101001011100010000001000011010100100100100101010011011101000100000101001100001000000110010101110011011101000010000001101101011001010110110101100010011100100110010100100000011001000110010100100000011011001110001010000000100110010110100101101110011100110111010001101001011101000111010101110100001000000110010001100101001000000111001001100101011000110110100001100101011100100110001101101000011001010111001100100000011010010110111001110100011001010111001001100100011010010111001101100011011010010111000001101100011010010110111001100001011010010111001001100101011100110010000001001001010100100100001101001001010000110100000100100000111000101000000010010011001000000101010101010011010100100010000001000011010011100101001001010011001000000011001100110011001110000011000000100000001010000111011101110111011101110010111001101001011100100110001101101001011000110110000100101110011101010110111001101001011101100010110101101100011010010110110001101100011001010011000100101110011001100111001000101001001011100010000001001100111000101000000010011001011101010110111001101001011101001100001110101001001000000110010101110011011101000010000001100011011011110110110101110000011011110111001111000011101010010110010100100000011001000110010100100000011100000111001011000011101010000111001100100000011001000110010100100000001101000011001100110000001000000110110101100101011011010110001001110010011001010111001100100000001010000011001000110010001100100010000001110000011001010111001001101101011000010110111001100101011011100111010001110011001000000110010101110100001000000111000001101100011101010111001100100000011001000110010100100000001100100011000000110000001000000110111001101111011011100010000001110000011001010111001001101101011000010110111001100101011011100111010001110011001010010010000001100100011011110110111001110100001000000011001000110010001000000111000001100101011100100110110101100001011011100110010101101110011101000111001100100000010000110100111001010010010100110010000001100101011101000010000000110010001101110010000001110000011001010111001001101101011000010110111001100101011011100111010001110011001000000100100101101110011100100110100101100001001011100010000001001100011001010111001100100000011000010110001101110100011010010111011001101001011101001100001110101001011100110010000001100100011001010010000001110010011001010110001101101000011001010111001001100011011010000110010100100000011001000110010100100000010000110101001001001001010100110111010001000001010011000010000001100011011011110110111001100011011001010111001001101110011001010110111001110100001000000110110001100101011100110010000001110100011010001100001110101001011011010110000101110100011010010111000101110101011001010111001100100000011011000110100111000011101010010110010101110011001000000110000101110101011110000010000001100111011100100110000101101110011001000111001100100000011001010110111001101010011001010111010101111000001000000111001101100011011010010110010101101110011101000110100101100110011010010111000101110101011001010111001100100000011001010111010000100000011100110110111101100011011010011100001110101001011101000110000101110101011110000010000001100100011101010010000001101101011011110110110101100101011011100111010000100000011101000110010101101100011100110010000001110001011101010110010100100000001110100010000001000010011010010110011101000100011000010111010001100001001011000010000001101100011011110110011101101001011000110110100101100101011011000010110000100000011010010110110101100001011001110110010100100000011001010111010000100000011100110110010101110011001000000111010101110011011000010110011101100101011100110010110000100000011010010110111001110100011001010111001001100001011000110111010001101001011011110110111001110011001000000110100001101111011011010110110101100101001011010110110101100001011000110110100001101001011011100110010100101100001000000111001001101111011000100110111101110100011010010111000101110101011001010010110000100000011000110110111101101101011011010110000101101110011001000110010100100000011001010111010000100000011100110111010101110000011001010111001001110110011010010111001101101001011011110110111000100000011001000110010100100000011001110111001001100001011011100110010001110011001000000111001101111001011100110111010011000011101010000110110101100101011100110010110000100000011100110111100101110011011101001100001110101000011011010110010101110011001000000110010101101101011000100110000101110010011100010111010111000011101010010111001100100000011010010110111001110100011001010110110001101100011010010110011101100101011011100111010001110011001011000010000001100010011010010110111100101101011010010110111001100110011011110111001001101101011000010111010001101001011100010111010101100101111000101000000010100110001000000110000101110110011001010110001100100000011001000110010101110011001000000110000101110000011100000110110001101001011000110110000101110100011010010110111101101110011100110010000001101110011011110111010001100001011011010110110101100101011011100111010000100000011001000110000101101110011100110010000001101100011001010111001100100000011100110110010101100011011101000110010101110101011100100111001100100000011001000110010100100000011011001110001010000000100110010110100101101110011001000111010101110011011101000111001001101001011001010010000001100100011101010010000001100011011011110110110101101101011001010111001001100011011001010010110000100000011001000110010101110011001000000111010001100101011000110110100001101110011011110110110001101111011001110110100101100101011100110010000001110000011011110111010101110010001000000110110001100001001000000111001101100001011011100111010011000011101010010010110000100000011001000110010101110011001000000111001101101101011000010111001001110100001000000110011101110010011010010110010001110011001011100100001101010010010010010101001101110100010000010100110000100000001010000100001101100101011011100111010001110010011001010010000001100100011001010010000001010010011001010110001101101000011001010111001001100011011010000110010100100000011001010110111000100000010010010110111001100110011011110111001001101101011000010111010001101001011100010111010101100101001011000010000001010011011010010110011101101110011000010110110000100000011001010111010000100000010000010111010101110100011011110110110101100001011101000110100101110001011101010110010100100000011001000110010100100000010011000110100101101100011011000110010100101001001000000110010101110011011101000010000001110101011011100110010100100000011101010110111001101001011101001100001110101001001000000110110101101001011110000111010001100101001000000110010001100101001000000111001001100101011000110110100001100101011100100110001101101000011001010010000000101000010101010100110101010010001000000011100100110001001110000011100100101001001000000111001011000011101010010111001101110101011011000111010001100001011011100111010000100000011001000110010100100000011011000110000100100000011001100111010101110011011010010110111101101110001000000110010001110101001000000100110001000001010001110100100101010011001000000010100001001100011000010110001001101111011100100110000101110100011011110110100101110010011001010010000001100100111000101000000010011001010000010111010101110100011011110110110101100001011101000110100101110001011101010110010100101100001000000100011111000011101010010110111001101001011001010010000001001001011011100110011001101111011100100110110101100001011101000110100101110001011101010110010100100000011001010111010000100000010100110110100101100111011011100110000101101100001000000010110100100000010101010100110101010010001000000011100000110010001100010011100100101001001000000110010101110100001000000110010001110101001000000100110001001001010001100100110000100000001010000100110001100001011000100110111101110010011000010111010001101111011010010111001001100101001000000110010011100010100000001001100101001001011011100110011001101111011100100110110101100001011101000110100101110001011101010110010100100000010001100110111101101110011001000110000101101101011001010110111001110100011000010110110001100101001000000110010001100101001000000100110001101001011011000110110001100101001000000010110100100000010101010100110101010010001000000011100000110000001100100011001000101001001000000111000001101111011101010111001000100000011001101100001110101001011001001100001110101001011100100110010101110010001000000110110001100101011101010111001001110011001000000110001101101111011011010111000011000011101010010111010001100101011011100110001101100101011100110010000001100011011011110110110101110000011011001100001110101001011011010110010101101110011101000110000101101001011100100110010101110011001000000110010101101110001000000111001101100011011010010110010101101110011000110110010101110011001000000110010001100101001000000110110011100010100000001001100101101001011011100110011001101111011100100110110101100001011101000110100101101111011011100010111000100000010000110101001001001001010100110111010001000001010011000010000001100101011100110111010000100000011011101100001110101001001000000110110001100101001000000011000101100101011100100010000001101010011000010110111001110110011010010110010101110010001000000011001000110000001100010011010100100000011100110110111101110101011100110010000001101100011000010010000001110100011101010111010001100101011011000110110001100101001000000110010001110101001000000100001101001110010100100101001100101100001000000110010001100101001000000110110011100010100000001001100101010101011011100110100101110110011001010111001001110011011010010111010011000011101010010010000001001100011010010110110001101100011001010010000000110001001000000110010101110100001000000110010001100101001000000110110011100010100000001001100101000101011000110110111101101100011001010010000001000011011001010110111001110100011100100110000101101100011001010010000001100100011001010010000001001100011010010110110001101100011001010010000001100101011011100010000001110000011000010111001001110100011001010110111001100001011100100110100101100001011101000010000001100001011101100110010101100011001000000110110011100010100000001001100101010101011011100110100101110110011001010111001001110011011010010111010011000011101010010010000001001100011010010110110001101100011001010010000000110011001011000010000001001001011011100111001001101001011000010010000001100101011101000010000001101100111000101000000010011001010010010110111001110011011101000110100101110100011101010111010000100000010011010110100101101110011001010111001100100000010101000110010101101100011001010110001101101111011011010010111000100000010000110101001001001001010100110111010001000001010011000010000001100101011100110111010000100000011011010110010101101101011000100111001001100101001000000110010001100101001000000110110011100010100000001001100101101001011011100111001101110100011010010111010001110101011101000010000001100100011001010010000001110010011001010110001101101000011001010111001001100011011010000110010101110011001000000110100101101110011101000110010101110010011001000110100101110011011000110110100101110000011011000110100101101110011000010110100101110010011001010111001100100000010010010101001001000011010010010100001101000001001000001110001010000000100100110010000001010101010100110101001000100000010000110100111001010010010100110010000000110011001100110011100000110000001000000010100001110111011101110111011100101110011010010111001001100011011010010110001101100001001011100111010101101110011010010111011000101101011011000110100101101100011011000110010100110001001011100110011001110010001010010010111000100000010011001110001010000000100110010111010101101110011010010111010011000011101010010010000001100101011100110111010000100000011000110110111101101101011100000110111101110011110000111010100101100101001000000110010001100101001000000111000001110010110000111010100001110011001000000110010001100101001000000011010000110011001100000010000001101101011001010110110101100010011100100110010101110011001000000010100000110010001100100011001000100000011100000110010101110010011011010110000101101110011001010110111001110100011100110010000001100101011101000010000001110000011011000111010101110011001000000110010001100101001000000011001000110000001100000010000001101110011011110110111000100000011100000110010101110010011011010110000101101110011001010110111001110100011100110010100100100000011001000110111101101110011101000010000000110010001100100010000001110000011001010111001001101101011000010110111001100101011011100111010001110011001000000100001101001110010100100101001100100000011001010111010000100000001100100011011100100000011100000110010101110010011011010110000101101110011001010110111001110100011100110010000001001001011011100111001001101001011000010010111000100000010011000110010101110011001000000110000101100011011101000110100101110110011010010111010011000011101010010111001100100000011001000110010100100000011100100110010101100011011010000110010101110010011000110110100001100101001000000110010001100101001000000100001101010010010010010101001101110100010000010100110000100000011000110110111101101110011000110110010101110010011011100110010101101110011101000010000001101100011001010111001100100000011101000110100011000011101010010110110101100001011101000110100101110001011101010110010101110011001000000110110001101001110000111010100101100101011100110010000001100001011101010111100000100000011001110111001001100001011011100110010001110011001000000110010101101110011010100110010101110101011110000010000001110011011000110110100101100101011011100111010001101001011001100110100101110001011101010110010101110011001000000110010101110100001000000111001101101111011000110110100111000011101010010111010001100001011101010111100000100000011001000111010100100000011011010110111101101101011001010110111001110100001000000111010001100101011011000111001100100000011100010111010101100101001000000011101000100000010000100110100101100111010001000110000101110100011000010010110000100000011011000110111101100111011010010110001101101001011001010110110000101100001000000110100101101101011000010110011101100101001000000110010101110100001000000111001101100101011100110010000001110101011100110110000101100111011001010111001100101100001000000110100101101110011101000110010101110010011000010110001101110100011010010110111101101110011100110010000001101000011011110110110101101101011001010010110101101101011000010110001101101000011010010110111001100101001011000010000001110010011011110110001001101111011101000110100101110001011101010110010100101100001000000110001101101111011011010110110101100001011011100110010001100101001000000110010101110100001000000111001101110101011100000110010101110010011101100110100101110011011010010110111101101110001000000110010001100101001000000110011101110010011000010110111001100100011100110010000001110011011110010111001101110100110000111010100001101101011001010111001100101100001000000111001101111001011100110111010011000011101010000110110101100101011100110010000001100101011011010110001001100001011100100111000101110101110000111010100101110011001000000110100101101110011101000110010101101100011011000110100101100111011001010110111001110100011100110010110000100000011000100110100101101111001011010110100101101110011001100110111101110010011011010110000101110100011010010111000101110101011001011110001010000000101001100010000001100001011101100110010101100011001000000110010001100101011100110010000001100001011100000111000001101100011010010110001101100001011101000110100101101111011011100111001100100000011011100110111101110100011000010110110101101101011001010110111001110100001000000110010001100001011011100111001100100000011011000110010101110011001000000111001101100101011000110111010001100101011101010111001001110011001000000110010001100101001000000110110011100010100000001001100101101001011011100110010001110101011100110111010001110010011010010110010100100000011001000111010100100000011000110110111101101101011011010110010101110010011000110110010100101100001000000110010001100101011100110010000001110100011001010110001101101000011011100110111101101100011011110110011101101001011001010111001100100000011100000110111101110101011100100010000001101100011000010010000001110011011000010110111001110100110000111010100100101100001000000110010001100101011100110010000001110011011011010110000101110010011101000010000001100111011100100110100101100100011100110010111001000011010100100100100101010011011101000100000101001100001000000010100001000011011001010110111001110100011100100110010100100000011001000110010100100000010100100110010101100011011010000110010101110010011000110110100001100101001000000110010101101110001000000100100101101110011001100110111101110010011011010110000101110100011010010111000101110101011001010010110000100000010100110110100101100111011011100110000101101100001000000110010101110100001000000100000101110101011101000110111101101101011000010111010001101001011100010111010101100101001000000110010001100101001000000100110001101001011011000110110001100101001010010010000001100101011100110111010000100000011101010110111001100101001000000111010101101110011010010111010011000011101010010010000001101101011010010111100001110100011001010010000001100100011001010010000001110010011001010110001101101000011001010111001001100011011010000110010100100000001010000101010101001101010100100010000000111001001100010011100000111001001010010010000001110010110000111010100101110011011101010110110001110100011000010110111001110100001000000110010001100101001000000110110001100001001000000110011001110101011100110110100101101111011011100010000001100100011101010010000001001100010000010100011101001001010100110010000000101000010011000110000101100010011011110111001001100001011101000110111101101001011100100110010100100000011001001110001010000000100110010100000101110101011101000110111101101101011000010111010001101001011100010111010101100101001011000010000001000111110000111010100101101110011010010110010100100000010010010110111001100110011011110111001001101101011000010111010001101001011100010111010101100101001000000110010101110100001000000101001101101001011001110110111001100001011011000010000000101101001000000101010101001101010100100010000000111000001100100011000100111001001010010010000001100101011101000010000001100100011101010010000001001100010010010100011001001100001000000010100001001100011000010110001001101111011100100110000101110100011011110110100101110010011001010010000001100100111000101000000010011001010010010110111001100110011011110111001001101101011000010111010001101001011100010111010101100101001000000100011001101111011011100110010001100001011011010110010101101110011101000110000101101100011001010010000001100100011001010010000001001100011010010110110001101100011001010010000000101101001000000101010101001101010100100010000000111000001100000011001000110010001010010010000001110000011011110111010101110010001000000110011011000011101010010110010011000011101010010111001001100101011100100010000001101100011001010111010101110010011100110010000001100011011011110110110101110000110000111010100101110100011001010110111001100011011001010111001100100000011000110110111101101101011100000110110011000011101010010110110101100101011011100111010001100001011010010111001001100101011100110010000001100101011011100010000001110011011000110110100101100101011011100110001101100101011100110010000001100100011001010010000001101100111000101000000010011001011010010110111001100110011011110111001001101101011000010111010001101001011011110110111000101110001000000100001101010010010010010101001101110100010000010100110000100000011001010111001101110100001000000110111011000011101010010010000001101100011001010010000000110001011001010111001000100000011010100110000101101110011101100110100101100101011100100010000000110010001100000011000100110101001000000111001101101111011101010111001100100000011011000110000100100000011101000111010101110100011001010110110001101100011001010010000001100100011101010010000001000011010011100101001001010011001011000010000001100100011001010010000001101100111000101000000010011001010101010110111001101001011101100110010101110010011100110110100101110100110000111010100100100000010011000110100101101100011011000110010100100000001100010010000001100101011101000010000001100100011001010010000001101100111000101000000010011001010001010110001101101111011011000110010100100000010000110110010101101110011101000111001001100001011011000110010100100000011001000110010100100000010011000110100101101100011011000110010100100000011001010110111000100000011100000110000101110010011101000110010101101110011000010111001001101001011000010111010000100000011000010111011001100101011000110010000001101100111000101000000010011001010101010110111001101001011101100110010101110010011100110110100101110100110000111010100100100000010011000110100101101100011011000110010100100000001100110010110000100000010010010110111001110010011010010110000100100000011001010111010000100000011011001110001010000000100110010100100101101110011100110111010001101001011101000111010101110100001000000100110101101001011011100110010101110011001000000101010001100101011011000110010101100011011011110110110100101110001000000100001101010010010010010101001101110100010000010100110000100000011001010111001101110100001000000110110101100101011011010110001001110010011001010010000001100100011001010010000001101100111000101000000010011001011010010110111001110011011101000110100101110100011101010111010000100000011001000110010100100000011100100110010101100011011010000110010101110010011000110110100001100101011100110010000001101001011011100111010001100101011100100110010001101001011100110110001101101001011100000110110001101001011011100110000101101001011100100110010101110011001000000100100101010010010000110100100101000011010000010010000011100010100000001001001100100000010101010101001101010010001000000100001101001110010100100101001100100000001100110011001100111000001100000010000000101000011101110111011101110111001011100110100101110010011000110110100101100011011000010010111001110101011011100110100101110110001011010110110001101001011011000110110001100101001100010010111001100110011100100010100100101110001000000100110011100010100000001001100101110101011011100110100101110100110000111010100100100000011001010111001101110100001000000110001101101111011011010111000001101111011100111100001110101001011001010010000001100100011001010010000001110000011100101100001110101000011100110010000001100100011001010010000000110100001100110011000000100000011011010110010101101101011000100111001001100101011100110010000000101000001100100011001000110010001000000111000001100101011100100110110101100001011011100110010101101110011101000111001100100000011001010111010000100000011100000110110001110101011100110010000001100100011001010010000000110010001100000011000000100000011011100110111101101110001000000111000001100101011100100110110101100001011011100110010101101110011101000111001100101001001000000110010001101111011011100111010000100000001100100011001000100000011100000110010101110010011011010110000101101110011001010110111001110100011100110010000001000011010011100101001001010011001000000110010101110100001000000011001000110111001000000111000001100101011100100110110101100001011011100110010101101110011101000111001100100000010010010110111001110010011010010110000100101110001000000100110001100101011100110010000001100001011000110111010001101001011101100110100101110100110000111010100101110011001000000110010001100101001000000111001001100101011000110110100001100101011100100110001101101000011001010010000001100100011001010010000001000011010100100100100101010011011101000100000101001100001000000110001101101111011011100110001101100101011100100110111001100101011011100111010000100000011011000110010101110011001000000111010001101000110000111010100101101101011000010111010001101001011100010111010101100101011100110010000001101100011010011100001110101001011001010111001100100000011000010111010101111000001000000110011101110010011000010110111001100100011100110010000001100101011011100110101001100101011101010111100000100000011100110110001101101001011001010110111001110100011010010110011001101001011100010111010101100101011100110010000001100101011101000010000001110011011011110110001101101001110000111010100101110100011000010111010101111000001000000110010001110101001000000110110101101111011011010110010101101110011101000010000001110100011001010110110001110011001000000111000101110101011001010010000000111010001000000100001001101001011001110100010001100001011101000110000100101100001000000110110001101111011001110110100101100011011010010110010101101100001011000010000001101001011011010110000101100111011001010010000001100101011101000010000001110011011001010111001100100000011101010111001101100001011001110110010101110011001011000010000001101001011011100111010001100101011100100110000101100011011101000110100101101111011011100111001100100000011010000110111101101101011011010110010100101101011011010110000101100011011010000110100101101110011001010010110000100000011100100110111101100010011011110111010001101001011100010111010101100101001011000010000001100011011011110110110101101101011000010110111001100100011001010010000001100101011101000010000001110011011101010111000001100101011100100111011001101001011100110110100101101111011011100010000001100100011001010010000001100111011100100110000101101110011001000111001100100000011100110111100101110011011101001100001110101000011011010110010101110011001011000010000001110011011110010111001101110100110000111010100001101101011001010111001100100000011001010110110101100010011000010111001001110001011101011100001110101001011100110010000001101001011011100111010001100101011011000110110001101001011001110110010101101110011101000111001100101100001000000110001001101001011011110010110101101001011011100110011001101111011100100110110101100001011101000110100101110001011101010110010111100010100000001010011000100000011000010111011001100101011000110010000001100100011001010111001100100000011000010111000001110000011011000110100101100011011000010111010001101001011011110110111001110011001000000110111001101111011101000110000101101101011011010110010101101110011101000010000001100100011000010110111001110011001000000110110001100101011100110010000001110011011001010110001101110100011001010111010101110010011100110010000001100100011001010010000001101100111000101000000010011001011010010110111001100100011101010111001101110100011100100110100101100101001000000110010001110101001000000110001101101111011011010110110101100101011100100110001101100101001011000010000001100100011001010111001100100000011101000110010101100011011010000110111001101111011011000110111101100111011010010110010101110011001000000111000001101111011101010111001000100000011011000110000100100000011100110110000101101110011101001100001110101001001011000010000001100100011001010111001100100000011100110110110101100001011100100111010000100000011001110111001001101001011001000111001100101110
Out[ ]:
'CRIStAL (Centre de Recherche en Informatique, Signal et Automatique de Lille) est une unité mixte de recherche (UMR 9189) résultant de la fusion du LAGIS (Laboratoire d’Automatique, Génie Informatique et Signal - UMR 8219) et du LIFL (Laboratoire d’Informatique Fondamentale de Lille - UMR 8022) pour fédérer leurs compétences complémentaires en sciences de l’information. CRIStAL est né le 1er janvier 2015 sous la tutelle du CNRS, de l’Université Lille 1 et de l’Ecole Centrale de Lille en partenariat avec l’Université Lille 3, Inria et l’Institut Mines Telecom. CRIStAL est membre de l’institut de recherches interdisciplinaires IRCICA – USR CNRS 3380 (www.ircica.univ-lille1.fr). L’unité est composée de près de 430 membres (222 permanents et plus de 200 non permanents) dont 22 permanents CNRS et 27 permanents Inria. Les activités de recherche de CRIStAL concernent les thématiques liées aux grands enjeux scientifiques et sociétaux du moment tels que : BigData, logiciel, image et ses usages, interactions homme-machine, robotique, commande et supervision de grands systèmes, systèmes embarqués intelligents, bio-informatique… avec des applications notamment dans les secteurs de l’industrie du commerce, des technologies pour la santé, des smart grids.CRIStAL (Centre de Recherche en Informatique, Signal et Automatique de Lille) est une unité mixte de recherche (UMR 9189) résultant de la fusion du LAGIS (Laboratoire d’Automatique, Génie Informatique et Signal - UMR 8219) et du LIFL (Laboratoire d’Informatique Fondamentale de Lille - UMR 8022) pour fédérer leurs compétences complémentaires en sciences de l’information. CRIStAL est né le 1er janvier 2015 sous la tutelle du CNRS, de l’Université Lille 1 et de l’Ecole Centrale de Lille en partenariat avec l’Université Lille 3, Inria et l’Institut Mines Telecom. CRIStAL est membre de l’institut de recherches interdisciplinaires IRCICA – USR CNRS 3380 (www.ircica.univ-lille1.fr). L’unité est composée de près de 430 membres (222 permanents et plus de 200 non permanents) dont 22 permanents CNRS et 27 permanents Inria. Les activités de recherche de CRIStAL concernent les thématiques liées aux grands enjeux scientifiques et sociétaux du moment tels que : BigData, logiciel, image et ses usages, interactions homme-machine, robotique, commande et supervision de grands systèmes, systèmes embarqués intelligents, bio-informatique… avec des applications notamment dans les secteurs de l’industrie du commerce, des technologies pour la santé, des smart grids.CRIStAL (Centre de Recherche en Informatique, Signal et Automatique de Lille) est une unité mixte de recherche (UMR 9189) résultant de la fusion du LAGIS (Laboratoire d’Automatique, Génie Informatique et Signal - UMR 8219) et du LIFL (Laboratoire d’Informatique Fondamentale de Lille - UMR 8022) pour fédérer leurs compétences complémentaires en sciences de l’information. CRIStAL est né le 1er janvier 2015 sous la tutelle du CNRS, de l’Université Lille 1 et de l’Ecole Centrale de Lille en partenariat avec l’Université Lille 3, Inria et l’Institut Mines Telecom. CRIStAL est membre de l’institut de recherches interdisciplinaires IRCICA – USR CNRS 3380 (www.ircica.univ-lille1.fr). L’unité est composée de près de 430 membres (222 permanents et plus de 200 non permanents) dont 22 permanents CNRS et 27 permanents Inria. Les activités de recherche de CRIStAL concernent les thématiques liées aux grands enjeux scientifiques et sociétaux du moment tels que : BigData, logiciel, image et ses usages, interactions homme-machine, robotique, commande et supervision de grands systèmes, systèmes embarqués intelligents, bio-informatique… avec des applications notamment dans les secteurs de l’industrie du commerce, des technologies pour la santé, des smart grids.CRIStAL (Centre de Recherche en Informatique, Signal et Automatique de Lille) est une unité mixte de recherche (UMR 9189) résultant de la fusion du LAGIS (Laboratoire d’Automatique, Génie Informatique et Signal - UMR 8219) et du LIFL (Laboratoire d’Informatique Fondamentale de Lille - UMR 8022) pour fédérer leurs compétences complémentaires en sciences de l’information. CRIStAL est né le 1er janvier 2015 sous la tutelle du CNRS, de l’Université Lille 1 et de l’Ecole Centrale de Lille en partenariat avec l’Université Lille 3, Inria et l’Institut Mines Telecom. CRIStAL est membre de l’institut de recherches interdisciplinaires IRCICA – USR CNRS 3380 (www.ircica.univ-lille1.fr). L’unité est composée de près de 430 membres (222 permanents et plus de 200 non permanents) dont 22 permanents CNRS et 27 permanents Inria. Les activités de recherche de CRIStAL concernent les thématiques liées aux grands enjeux scientifiques et sociétaux du moment tels que : BigData, logiciel, image et ses usages, interactions homme-machine, robotique, commande et supervision de grands systèmes, systèmes embarqués intelligents, bio-informatique… avec des applications notamment dans les secteurs de l’industrie du commerce, des technologies pour la santé, des smart grids.CRIStAL (Centre de Recherche en Informatique, Signal et Automatique de Lille) est une unité mixte de recherche (UMR 9189) résultant de la fusion du LAGIS (Laboratoire d’Automatique, Génie Informatique et Signal - UMR 8219) et du LIFL (Laboratoire d’Informatique Fondamentale de Lille - UMR 8022) pour fédérer leurs compétences complémentaires en sciences de l’information. CRIStAL est né le 1er janvier 2015 sous la tutelle du CNRS, de l’Université Lille 1 et de l’Ecole Centrale de Lille en partenariat avec l’Université Lille 3, Inria et l’Institut Mines Telecom. CRIStAL est membre de l’institut de recherches interdisciplinaires IRCICA – USR CNRS 3380 (www.ircica.univ-lille1.fr). L’unité est composée de près de 430 membres (222 permanents et plus de 200 non permanents) dont 22 permanents CNRS et 27 permanents Inria. Les activités de recherche de CRIStAL concernent les thématiques liées aux grands enjeux scientifiques et sociétaux du moment tels que : BigData, logiciel, image et ses usages, interactions homme-machine, robotique, commande et supervision de grands systèmes, systèmes embarqués intelligents, bio-informatique… avec des applications notamment dans les secteurs de l’industrie du commerce, des technologies pour la santé, des smart grids.CRIStAL (Centre de Recherche en Informatique, Signal et Automatique de Lille) est une unité mixte de recherche (UMR 9189) résultant de la fusion du LAGIS (Laboratoire d’Automatique, Génie Informatique et Signal - UMR 8219) et du LIFL (Laboratoire d’Informatique Fondamentale de Lille - UMR 8022) pour fédérer leurs compétences complémentaires en sciences de l’information. CRIStAL est né le 1er janvier 2015 sous la tutelle du CNRS, de l’Université Lille 1 et de l’Ecole Centrale de Lille en partenariat avec l’Université Lille 3, Inria et l’Institut Mines Telecom. CRIStAL est membre de l’institut de recherches interdisciplinaires IRCICA – USR CNRS 3380 (www.ircica.univ-lille1.fr). L’unité est composée de près de 430 membres (222 permanents et plus de 200 non permanents) dont 22 permanents CNRS et 27 permanents Inria. Les activités de recherche de CRIStAL concernent les thématiques liées aux grands enjeux scientifiques et sociétaux du moment tels que : BigData, logiciel, image et ses usages, interactions homme-machine, robotique, commande et supervision de grands systèmes, systèmes embarqués intelligents, bio-informatique… avec des applications notamment dans les secteurs de l’industrie du commerce, des technologies pour la santé, des smart grids.'
In [ ]:
# Convert the key to bits, then to an integer

#key_unicode = unicode(key, "utf-8")
#bits_key = '{:b}'.format(int(key_unicode.encode('utf-8').encode('hex'), 16))

key_unicode = str(key)
#bits_key = ''.join('{:08b}'.format(b) for b in key_unicode.encode('utf8'))


#key_int = sum(map(lambda x: x[1]*(2**x[0]), enumerate(map(int, str(bits_key))[::-1])))   
key_int = hash(key) #sum(map(lambda x: x[1]*(2**x[0]), enumerate(int(bits_key))[::-1]))   

 
# Compute the message size
nb_bits = len(bits)


print('message size:' , nb_bits)
message size: 62687

Récupération du canal bleu¶

In [ ]:
    
# Get the blue channel
blue_channel = im_array[:,:,2]
w,h = blue_channel.shape
blue_channel_vec = np.reshape(blue_channel,(w*h))

# Print some pixels values
print(blue_channel[:10,:10])

plt.figure(1,figsize=(10,10))
plt.imshow(blue_channel,cmap='Blues')
[[113 114 113 118 128 135 139 139 139 139]
 [112 113 113 116 125 131 136 138 139 139]
 [111 112 111 111 113 118 122 132 136 136]
 [112 110 111 109 111 110 116 126 131 132]
 [111 109 110 107 109 109 115 119 122 125]
 [108 110 110 110 111 111 115 123 130 133]
 [109 110 109 110 112 118 124 130 135 138]
 [109 110 110 111 117 126 134 136 139 141]
 [112 114 117 120 127 133 137 139 139 139]
 [115 121 126 132 137 137 138 140 141 139]]
Out[ ]:
<matplotlib.image.AxesImage at 0x15d447fbb50>

Permutation des pixels, dépendante de la clé¶

In [ ]:
# Perform a pseudo random permutation
np.random.seed(np.mod(key_int,4294967295))
index_perm = np.random.permutation(w*h)

print(index_perm[:10])
[219045 250766 205770 140183 112858 154956 108881  18349 180527 177506]
In [ ]:
blue_perm = blue_channel_vec[index_perm]

print(blue_perm[:100])
[ 82 125  76  27 160 207 173 152  65  72  98  61  92  83  74 135  55 148
  58 169 181  75  71 119 100 135 148 204  98 154  98  85 100  71 170 103
 172 150  92 206 136 116  71 187 126  47  91 142 151  82 100  77 184  71
 102  70  23 169 175  67   1 151 149  73  76 145 122 155  57  65  77 103
 173  85  62  52 183 152 164 155 176 131  62  73 134 185 120 146 106 158
  97 139 220  73 170 132  41  99  56 155]

Récupération des bits de poids faibles¶

In [ ]:
# Get the LSBs
lsb = blue_perm&1

print(lsb[:100])
[0 1 0 1 0 1 1 0 1 0 0 1 0 1 0 1 1 0 0 1 1 1 1 1 0 1 0 0 0 0 0 1 0 1 0 1 0
 0 0 0 0 0 1 1 0 1 1 0 1 0 0 1 0 1 0 0 1 1 1 1 1 1 1 1 0 1 0 1 1 1 1 1 1 1
 0 0 1 0 0 1 0 1 0 1 0 1 0 0 0 0 1 1 0 1 0 0 1 1 0 1]

Insertion du message¶

In [ ]:
# Write the size on the first 32 bits
lsb[:32]= list(np.binary_repr(nb_bits, width=32))
# Write the message after
lsb[32:32+nb_bits] = list(bits)

# LSB substitution
blue_perm_stego = (blue_perm & ~1) | lsb

print(blue_perm_stego[:100])

print(blue_perm_stego[:100]-blue_perm[:100])
[ 82 124  76  26 160 206 172 152  64  72  98  60  92  82  74 134  55 149
  59 169 180  75  70 118 101 135 148 205  99 155  99  85 101  70 170 102
 172 151  93 206 137 116  71 186 126  47  90 142 151  82 100  77 184  70
 103  70  23 168 175  66   0 151 149  72  77 145 123 154  57  64  76 102
 173  84  62  52 182 152 165 154 177 130  62  73 135 184 120 146 106 159
  96 138 220  72 170 132  40  99  56 155]
[ 0 -1  0 -1  0 -1 -1  0 -1  0  0 -1  0 -1  0 -1  0  1  1  0 -1  0 -1 -1
  1  0  0  1  1  1  1  0  1 -1  0 -1  0  1  1  0  1  0  0 -1  0  0 -1  0
  0  0  0  0  0 -1  1  0  0 -1  0 -1 -1  0  0 -1  1  0  1 -1  0 -1 -1 -1
  0 -1  0  0 -1  0  1 -1  1 -1  0  0  1 -1  0  0  0  1 -1 -1  0 -1  0  0
 -1  0  0  0]

Permutation inverse et substitution du canal bleu¶

In [ ]:
blue_stego = np.zeros((w*h))
# Inverse permutation
blue_stego[index_perm] = blue_perm_stego
blue_stego = np.reshape(blue_stego,(w,h))
blue_stego = blue_stego.astype(dtype=np.uint8)
im_stego[:,:,2] = blue_stego
    

Enregistrement, calcul du taux d'insertion¶

In [ ]:
# Save and show the stego picture
im_stego_png = Image.fromarray(im_stego)
im_stego_png.save(stego_path)
plt.figure(2,figsize=(10,10))
plt.imshow(im_stego)
print('embedding rate:\n',float(nb_bits+32)/(3*h*w), 'bpp\n')
embedding rate:
 0.07975133260091145 bpp

Image différence¶

In [ ]:
# Show the difference

plt.figure(1,figsize=(10,10))
plt.imshow(blue_stego-blue_channel,cmap='Greys')
Out[ ]:
<matplotlib.image.AxesImage at 0x15d448b4670>

Décodage du message¶

In [ ]:
# Decode

# Open the image
pil_image = Image.open(stego_path)
im_array = np.asarray(pil_image)

# Use a key
key = 'azerty'

# Convert the key to bits, then to an integer

#key_unicode = unicode(key, "utf-8")
#bits_key = '{:b}'.format(int(key_unicode.encode('utf-8').encode('hex'), 16))
#key_int = sum(map(lambda x: x[1]*(2**x[0]), enumerate(map(int, str(bits_key))[::-1])))   
key_int = hash(key)

# Get the blue channel
blue_channel_test = im_array[:,:,2]
w,h = blue_channel_test.shape
blue_channel_vec = np.reshape(blue_channel_test,(w*h))
    
# Perform a pseudo random permutation
np.random.seed(np.mod(key_int,4294967295))
index_perm = np.random.permutation(w*h)
blue_perm = blue_channel_vec[index_perm]

#Get the message size from the first 32 bits
nb_bits = int(str(blue_perm[:32]&1).replace('[','').replace(']','').replace(' ',''),2)
print(nb_bits)
62687
In [ ]:
# If message size larger than image size, extract at maximum capacity
if nb_bits>h*w : nb_bits = h*w-32

# Get the pixels encoding the message
blue_perm_new = blue_perm[32:32+nb_bits]
# Get the LSBs
lsb = blue_perm_new&1

print(lsb)

# Convert the lsb to string
bit_string2 = lsb.tostring()
bit_str = '0b'
print(len(lsb))
for i in range(len(lsb)):
    #print(lsb[i])
    if lsb[i]==0:
        bit_str=bit_str+'0'
    else:
        bit_str=bit_str+'1'

#print(bit_str)
#print(bytes(bit_string))
#print(format(bit_string, 'b'))
# Do some string manipulation
#new_string = str(bit_string).replace('\x01','1')
#new_string = new_string.replace('\x00','0')

#print(new_string)

# Do the convertion
#chars = ('%x' % int(new_string[:nb_bits], 2)).decode('hex').decode('utf-8',errors='ignore')
#print(bit_str)

n = int(bit_str, 2)
#print(n)
#print(bit_string[:10])
print(bit_str[:10])

n.to_bytes((n.bit_length() + 7) // 8, 'big').decode()
[1 0 0 ... 1 1 0]
62687
C:\Users\NICOLAS\AppData\Local\Temp\ipykernel_16552\2137236598.py:12: DeprecationWarning: tostring() is deprecated. Use tobytes() instead.
  bit_string2 = lsb.tostring()
0b10000110
Out[ ]:
'CRIStAL (Centre de Recherche en Informatique, Signal et Automatique de Lille) est une unité mixte de recherche (UMR 9189) résultant de la fusion du LAGIS (Laboratoire d’Automatique, Génie Informatique et Signal - UMR 8219) et du LIFL (Laboratoire d’Informatique Fondamentale de Lille - UMR 8022) pour fédérer leurs compétences complémentaires en sciences de l’information. CRIStAL est né le 1er janvier 2015 sous la tutelle du CNRS, de l’Université Lille 1 et de l’Ecole Centrale de Lille en partenariat avec l’Université Lille 3, Inria et l’Institut Mines Telecom. CRIStAL est membre de l’institut de recherches interdisciplinaires IRCICA – USR CNRS 3380 (www.ircica.univ-lille1.fr). L’unité est composée de près de 430 membres (222 permanents et plus de 200 non permanents) dont 22 permanents CNRS et 27 permanents Inria. Les activités de recherche de CRIStAL concernent les thématiques liées aux grands enjeux scientifiques et sociétaux du moment tels que : BigData, logiciel, image et ses usages, interactions homme-machine, robotique, commande et supervision de grands systèmes, systèmes embarqués intelligents, bio-informatique… avec des applications notamment dans les secteurs de l’industrie du commerce, des technologies pour la santé, des smart grids.CRIStAL (Centre de Recherche en Informatique, Signal et Automatique de Lille) est une unité mixte de recherche (UMR 9189) résultant de la fusion du LAGIS (Laboratoire d’Automatique, Génie Informatique et Signal - UMR 8219) et du LIFL (Laboratoire d’Informatique Fondamentale de Lille - UMR 8022) pour fédérer leurs compétences complémentaires en sciences de l’information. CRIStAL est né le 1er janvier 2015 sous la tutelle du CNRS, de l’Université Lille 1 et de l’Ecole Centrale de Lille en partenariat avec l’Université Lille 3, Inria et l’Institut Mines Telecom. CRIStAL est membre de l’institut de recherches interdisciplinaires IRCICA – USR CNRS 3380 (www.ircica.univ-lille1.fr). L’unité est composée de près de 430 membres (222 permanents et plus de 200 non permanents) dont 22 permanents CNRS et 27 permanents Inria. Les activités de recherche de CRIStAL concernent les thématiques liées aux grands enjeux scientifiques et sociétaux du moment tels que : BigData, logiciel, image et ses usages, interactions homme-machine, robotique, commande et supervision de grands systèmes, systèmes embarqués intelligents, bio-informatique… avec des applications notamment dans les secteurs de l’industrie du commerce, des technologies pour la santé, des smart grids.CRIStAL (Centre de Recherche en Informatique, Signal et Automatique de Lille) est une unité mixte de recherche (UMR 9189) résultant de la fusion du LAGIS (Laboratoire d’Automatique, Génie Informatique et Signal - UMR 8219) et du LIFL (Laboratoire d’Informatique Fondamentale de Lille - UMR 8022) pour fédérer leurs compétences complémentaires en sciences de l’information. CRIStAL est né le 1er janvier 2015 sous la tutelle du CNRS, de l’Université Lille 1 et de l’Ecole Centrale de Lille en partenariat avec l’Université Lille 3, Inria et l’Institut Mines Telecom. CRIStAL est membre de l’institut de recherches interdisciplinaires IRCICA – USR CNRS 3380 (www.ircica.univ-lille1.fr). L’unité est composée de près de 430 membres (222 permanents et plus de 200 non permanents) dont 22 permanents CNRS et 27 permanents Inria. Les activités de recherche de CRIStAL concernent les thématiques liées aux grands enjeux scientifiques et sociétaux du moment tels que : BigData, logiciel, image et ses usages, interactions homme-machine, robotique, commande et supervision de grands systèmes, systèmes embarqués intelligents, bio-informatique… avec des applications notamment dans les secteurs de l’industrie du commerce, des technologies pour la santé, des smart grids.CRIStAL (Centre de Recherche en Informatique, Signal et Automatique de Lille) est une unité mixte de recherche (UMR 9189) résultant de la fusion du LAGIS (Laboratoire d’Automatique, Génie Informatique et Signal - UMR 8219) et du LIFL (Laboratoire d’Informatique Fondamentale de Lille - UMR 8022) pour fédérer leurs compétences complémentaires en sciences de l’information. CRIStAL est né le 1er janvier 2015 sous la tutelle du CNRS, de l’Université Lille 1 et de l’Ecole Centrale de Lille en partenariat avec l’Université Lille 3, Inria et l’Institut Mines Telecom. CRIStAL est membre de l’institut de recherches interdisciplinaires IRCICA – USR CNRS 3380 (www.ircica.univ-lille1.fr). L’unité est composée de près de 430 membres (222 permanents et plus de 200 non permanents) dont 22 permanents CNRS et 27 permanents Inria. Les activités de recherche de CRIStAL concernent les thématiques liées aux grands enjeux scientifiques et sociétaux du moment tels que : BigData, logiciel, image et ses usages, interactions homme-machine, robotique, commande et supervision de grands systèmes, systèmes embarqués intelligents, bio-informatique… avec des applications notamment dans les secteurs de l’industrie du commerce, des technologies pour la santé, des smart grids.CRIStAL (Centre de Recherche en Informatique, Signal et Automatique de Lille) est une unité mixte de recherche (UMR 9189) résultant de la fusion du LAGIS (Laboratoire d’Automatique, Génie Informatique et Signal - UMR 8219) et du LIFL (Laboratoire d’Informatique Fondamentale de Lille - UMR 8022) pour fédérer leurs compétences complémentaires en sciences de l’information. CRIStAL est né le 1er janvier 2015 sous la tutelle du CNRS, de l’Université Lille 1 et de l’Ecole Centrale de Lille en partenariat avec l’Université Lille 3, Inria et l’Institut Mines Telecom. CRIStAL est membre de l’institut de recherches interdisciplinaires IRCICA – USR CNRS 3380 (www.ircica.univ-lille1.fr). L’unité est composée de près de 430 membres (222 permanents et plus de 200 non permanents) dont 22 permanents CNRS et 27 permanents Inria. Les activités de recherche de CRIStAL concernent les thématiques liées aux grands enjeux scientifiques et sociétaux du moment tels que : BigData, logiciel, image et ses usages, interactions homme-machine, robotique, commande et supervision de grands systèmes, systèmes embarqués intelligents, bio-informatique… avec des applications notamment dans les secteurs de l’industrie du commerce, des technologies pour la santé, des smart grids.CRIStAL (Centre de Recherche en Informatique, Signal et Automatique de Lille) est une unité mixte de recherche (UMR 9189) résultant de la fusion du LAGIS (Laboratoire d’Automatique, Génie Informatique et Signal - UMR 8219) et du LIFL (Laboratoire d’Informatique Fondamentale de Lille - UMR 8022) pour fédérer leurs compétences complémentaires en sciences de l’information. CRIStAL est né le 1er janvier 2015 sous la tutelle du CNRS, de l’Université Lille 1 et de l’Ecole Centrale de Lille en partenariat avec l’Université Lille 3, Inria et l’Institut Mines Telecom. CRIStAL est membre de l’institut de recherches interdisciplinaires IRCICA – USR CNRS 3380 (www.ircica.univ-lille1.fr). L’unité est composée de près de 430 membres (222 permanents et plus de 200 non permanents) dont 22 permanents CNRS et 27 permanents Inria. Les activités de recherche de CRIStAL concernent les thématiques liées aux grands enjeux scientifiques et sociétaux du moment tels que : BigData, logiciel, image et ses usages, interactions homme-machine, robotique, commande et supervision de grands systèmes, systèmes embarqués intelligents, bio-informatique… avec des applications notamment dans les secteurs de l’industrie du commerce, des technologies pour la santé, des smart grids.'

Steganalyse quantitative: estimation de la taille du message¶

To code¶

In [ ]:
# Get the image

pil_image = Image.open('./stego.png')


#fficher la taille de l image
print(pil_image.size[0]*pil_image.size[1])

im_array = np.asarray(pil_image)
im_stego = np.copy(im_array)

Im = im_array[:,:,2]

# Get pairs of neighboring pixels
R = Im[:,:-1]
S = Im[:,1:]

width, height = S.shape

size = float(width * height)

im_stego = S.astype(float)
im_Diff = S.astype(float) - R.astype(float)
Zp = np.sum(im_Diff==0)
print("Zp : ",Zp)
#(s-r)=-1 && s pair ou (s-r)=1 && s impair
Wp = np.sum(((S%2==1) & (im_Diff==1)) + ((S%2==0) & (im_Diff==-1)))
print("Wp : ",Wp)
#s pair et r<s ou s impair et r>s
Xp = np.sum(((S%2==0) & (im_Diff>0)) + ((S%2==1) & (im_Diff<0)))
print("Xp : ", Xp)
#s pair et (s-r)<-1 ou s impair et (s-r)>1
Vp = np.sum(((S%2==0) & (im_Diff<-1)) + ((S%2==1) & (im_Diff>1)))
print("Vp : ",Vp)

Pp = Xp+Vp+Zp+Wp
print('P: ',Pp,' doit normalement approcher 511*512 = 261632')

a = float(2*(Wp+Zp))
b = float(2*(2*Xp-Pp))
c = float(Vp+Wp-Xp)
print('a= ',a,'b= ',b,'c= ',c)
 
delta = b*b-4*a*c
print('delta= ',delta)
# calcul de l'estimation de p
pEst=(-b-np.sqrt(delta))/(2*a)

print('estimated message size (bits):' , pEst*2*512**2)  

print('real message size (bits):' , nb_bits)
262144
Zp :  33194
Wp :  30777
Xp :  110277
Vp :  87384
P:  261632  doit normalement approcher 511*512 = 261632
a=  127942.0 b=  -82156.0 c=  7884.0
delta=  2714829424.0
estimated message size (bits): 61574.34562034313
real message size (bits): 62687

On obtient une valeur relativement proche, on a 1.7% d'erreur

En faisant varier la clé, donner l'écart type et la moyenne de la taille estimée¶

In [ ]:
from tqdm import tqdm
#en faisant varier la clé, donner l ecart type et la moyenne de la taille du message estimé
size_list = []
for k in tqdm(range(1000)):
    #generate a key with 6 characters
    key = ''.join(random.choice('azertyuiopqsdfghjklmwxcvbn') for _ in range(6))
    message = 'CRIStAL (Centre de Recherche en Informatique, Signal et Automatique de Lille) est une unité mixte de recherche (UMR 9189) résultant de la fusion du LAGIS (Laboratoire d’Automatique, Génie Informatique et Signal - UMR 8219) et du LIFL (Laboratoire d’Informatique Fondamentale de Lille - UMR 8022) pour fédérer leurs compétences complémentaires en sciences de l’information. CRIStAL est né le 1er janvier 2015 sous la tutelle du CNRS, de l’Université Lille 1 et de l’Ecole Centrale de Lille en partenariat avec l’Université Lille 3, Inria et l’Institut Mines Telecom. CRIStAL est membre de l’institut de recherches interdisciplinaires IRCICA – USR CNRS 3380 (www.ircica.univ-lille1.fr). L’unité est composée de près de 430 membres (222 permanents et plus de 200 non permanents) dont 22 permanents CNRS et 27 permanents Inria. Les activités de recherche de CRIStAL concernent les thématiques liées aux grands enjeux scientifiques et sociétaux du moment tels que : BigData, logiciel, image et ses usages, interactions homme-machine, robotique, commande et supervision de grands systèmes, systèmes embarqués intelligents, bio-informatique… avec des applications notamment dans les secteurs de l’industrie du commerce, des technologies pour la santé, des smart grids.CRIStAL (Centre de Recherche en Informatique, Signal et Automatique de Lille) est une unité mixte de recherche (UMR 9189) résultant de la fusion du LAGIS (Laboratoire d’Automatique, Génie Informatique et Signal - UMR 8219) et du LIFL (Laboratoire d’Informatique Fondamentale de Lille - UMR 8022) pour fédérer leurs compétences complémentaires en sciences de l’information. CRIStAL est né le 1er janvier 2015 sous la tutelle du CNRS, de l’Université Lille 1 et de l’Ecole Centrale de Lille en partenariat avec l’Université Lille 3, Inria et l’Institut Mines Telecom. CRIStAL est membre de l’institut de recherches interdisciplinaires IRCICA – USR CNRS 3380 (www.ircica.univ-lille1.fr). L’unité est composée de près de 430 membres (222 permanents et plus de 200 non permanents) dont 22 permanents CNRS et 27 permanents Inria. Les activités de recherche de CRIStAL concernent les thématiques liées aux grands enjeux scientifiques et sociétaux du moment tels que : BigData, logiciel, image et ses usages, interactions homme-machine, robotique, commande et supervision de grands systèmes, systèmes embarqués intelligents, bio-informatique… avec des applications notamment dans les secteurs de l’industrie du commerce, des technologies pour la santé, des smart grids.CRIStAL (Centre de Recherche en Informatique, Signal et Automatique de Lille) est une unité mixte de recherche (UMR 9189) résultant de la fusion du LAGIS (Laboratoire d’Automatique, Génie Informatique et Signal - UMR 8219) et du LIFL (Laboratoire d’Informatique Fondamentale de Lille - UMR 8022) pour fédérer leurs compétences complémentaires en sciences de l’information. CRIStAL est né le 1er janvier 2015 sous la tutelle du CNRS, de l’Université Lille 1 et de l’Ecole Centrale de Lille en partenariat avec l’Université Lille 3, Inria et l’Institut Mines Telecom. CRIStAL est membre de l’institut de recherches interdisciplinaires IRCICA – USR CNRS 3380 (www.ircica.univ-lille1.fr). L’unité est composée de près de 430 membres (222 permanents et plus de 200 non permanents) dont 22 permanents CNRS et 27 permanents Inria. Les activités de recherche de CRIStAL concernent les thématiques liées aux grands enjeux scientifiques et sociétaux du moment tels que : BigData, logiciel, image et ses usages, interactions homme-machine, robotique, commande et supervision de grands systèmes, systèmes embarqués intelligents, bio-informatique… avec des applications notamment dans les secteurs de l’industrie du commerce, des technologies pour la santé, des smart grids.CRIStAL (Centre de Recherche en Informatique, Signal et Automatique de Lille) est une unité mixte de recherche (UMR 9189) résultant de la fusion du LAGIS (Laboratoire d’Automatique, Génie Informatique et Signal - UMR 8219) et du LIFL (Laboratoire d’Informatique Fondamentale de Lille - UMR 8022) pour fédérer leurs compétences complémentaires en sciences de l’information. CRIStAL est né le 1er janvier 2015 sous la tutelle du CNRS, de l’Université Lille 1 et de l’Ecole Centrale de Lille en partenariat avec l’Université Lille 3, Inria et l’Institut Mines Telecom. CRIStAL est membre de l’institut de recherches interdisciplinaires IRCICA – USR CNRS 3380 (www.ircica.univ-lille1.fr). L’unité est composée de près de 430 membres (222 permanents et plus de 200 non permanents) dont 22 permanents CNRS et 27 permanents Inria. Les activités de recherche de CRIStAL concernent les thématiques liées aux grands enjeux scientifiques et sociétaux du moment tels que : BigData, logiciel, image et ses usages, interactions homme-machine, robotique, commande et supervision de grands systèmes, systèmes embarqués intelligents, bio-informatique… avec des applications notamment dans les secteurs de l’industrie du commerce, des technologies pour la santé, des smart grids.CRIStAL (Centre de Recherche en Informatique, Signal et Automatique de Lille) est une unité mixte de recherche (UMR 9189) résultant de la fusion du LAGIS (Laboratoire d’Automatique, Génie Informatique et Signal - UMR 8219) et du LIFL (Laboratoire d’Informatique Fondamentale de Lille - UMR 8022) pour fédérer leurs compétences complémentaires en sciences de l’information. CRIStAL est né le 1er janvier 2015 sous la tutelle du CNRS, de l’Université Lille 1 et de l’Ecole Centrale de Lille en partenariat avec l’Université Lille 3, Inria et l’Institut Mines Telecom. CRIStAL est membre de l’institut de recherches interdisciplinaires IRCICA – USR CNRS 3380 (www.ircica.univ-lille1.fr). L’unité est composée de près de 430 membres (222 permanents et plus de 200 non permanents) dont 22 permanents CNRS et 27 permanents Inria. Les activités de recherche de CRIStAL concernent les thématiques liées aux grands enjeux scientifiques et sociétaux du moment tels que : BigData, logiciel, image et ses usages, interactions homme-machine, robotique, commande et supervision de grands systèmes, systèmes embarqués intelligents, bio-informatique… avec des applications notamment dans les secteurs de l’industrie du commerce, des technologies pour la santé, des smart grids.CRIStAL (Centre de Recherche en Informatique, Signal et Automatique de Lille) est une unité mixte de recherche (UMR 9189) résultant de la fusion du LAGIS (Laboratoire d’Automatique, Génie Informatique et Signal - UMR 8219) et du LIFL (Laboratoire d’Informatique Fondamentale de Lille - UMR 8022) pour fédérer leurs compétences complémentaires en sciences de l’information. CRIStAL est né le 1er janvier 2015 sous la tutelle du CNRS, de l’Université Lille 1 et de l’Ecole Centrale de Lille en partenariat avec l’Université Lille 3, Inria et l’Institut Mines Telecom. CRIStAL est membre de l’institut de recherches interdisciplinaires IRCICA – USR CNRS 3380 (www.ircica.univ-lille1.fr). L’unité est composée de près de 430 membres (222 permanents et plus de 200 non permanents) dont 22 permanents CNRS et 27 permanents Inria. Les activités de recherche de CRIStAL concernent les thématiques liées aux grands enjeux scientifiques et sociétaux du moment tels que : BigData, logiciel, image et ses usages, interactions homme-machine, robotique, commande et supervision de grands systèmes, systèmes embarqués intelligents, bio-informatique… avec des applications notamment dans les secteurs de l’industrie du commerce, des technologies pour la santé, des smart grids.'
    message_unicode = str(message)
    pil_image = Image.open(image_path)
    im_array = np.asarray(pil_image)
    im_stego = np.copy(im_array)
    bits  = bin(int.from_bytes(message.encode(), 'big'))
    bits = bits[2:]
    bit_string  = bin(int.from_bytes(message.encode(), 'big'))
    n = int('0b'+bit_string[2:], 2)
    n.to_bytes((n.bit_length() + 7) // 8, 'big').decode()
    key_unicode = str(key)
    key_int = hash(key)
    nb_bits = len(bits)
    blue_channel = im_array[:,:,2]
    w,h = blue_channel.shape
    blue_channel_vec = np.reshape(blue_channel,(w*h))
    np.random.seed(np.mod(key_int,4294967295))
    index_perm = np.random.permutation(w*h)
    blue_perm = blue_channel_vec[index_perm]
    lsb = blue_perm&1
    lsb[:32]= list(np.binary_repr(nb_bits, width=32))
    lsb[32:32+nb_bits] = list(bits)
    blue_perm_stego = (blue_perm & ~1) | lsb
    blue_stego = np.zeros((w*h))
    blue_stego[index_perm] = blue_perm_stego
    blue_stego = np.reshape(blue_stego,(w,h))
    blue_stego = blue_stego.astype(dtype=np.uint8)
    im_stego[:,:,2] = blue_stego
    im_stego_png = Image.fromarray(im_stego)
    im_stego_png.save(stego_path)


    pil_image = Image.open('./stego.png')

    im_array = np.asarray(pil_image)
    im_stego = np.copy(im_array)
    
    Im = im_array[:,:,2]

    # Get pairs of neighboring pixels
    R = Im[:,:-1]
    S = Im[:,1:]

    width, height = S.shape

    size = float(width * height)

    im_stego = S.astype(float)
    im_Diff = S.astype(float) - R.astype(float)

    Zp = np.sum(im_Diff==0)
    Wp = np.sum(((S%2==1) & (im_Diff==1)) + ((S%2==0) & (im_Diff==-1)))
    Xp = np.sum(((S%2==0) & (im_Diff>0)) + ((S%2==1) & (im_Diff<0)))
    Vp = np.sum(((S%2==0) & (im_Diff<-1)) + ((S%2==1) & (im_Diff>1)))

    Pp = Xp+Vp+Zp+Wp

    a = float(2*(Wp+Zp))
    b = float(2*(2*Xp-Pp))
    c = float(Vp+Wp-Xp)

    delta = b*b-4*a*c

    # calcul de l'estimation de p
    pEst=(-b-np.sqrt(delta))/(2*a)
    size_list.append(pEst*2*512**2)

print('moyenne: ',np.mean(size_list))
print('ecart type: ',np.std(size_list))
100%|██████████| 1000/1000 [02:58<00:00,  5.62it/s]
moyenne:  62282.10268972342
ecart type:  2448.8723953057774

Nous trouvons une moyenne de 62282 pour 62687 recherché et un écrat type de 2448, soit 3.9% avec 1000 essais. Logiquement, en augmentant le nombre d'essais, on devrait se rapprocher de la valeur recherchée et l'écart type devrait diminuer.

In [ ]: